New Features: Data can now be compressed. The header generation functions set_mime_{text,binary} can be used to `turn on' output compression by using `x_gzip' as a content-encoding value (the default is no compression which corresponds to a content-encoding value of x_plain). The implementation of Connect will automatically decompress any compressed data stream. Can should be taken not to compress very small things since they may wind up bigger! Also, the program gzip is used to perform the compression so it must either be in DODS_ROOT/etc or on the user's PATH.
New Features:
Data can now be compressed. The header generation functions
set_mime_{text,binary} can be used to `turn on' output compression by using
`x_gzip' as a content-encoding value (the default is no compression which
corresponds to a content-encoding value of x_plain). The implementation of
Connect will automatically decompress any compressed data stream. Can should
be taken not to compress very small things since they may wind up bigger!
Also, the program gzip is used to perform the compression so it must either
be in DODS_ROOT/etc or on the user's PATH.

Multiple, simultaneous, connects are now supported. To do this I added a new
parameter to serialize and deserialize. The parameter is an XDR pointer.
There are function in cgi_util.cc which can be used to create these pointers.
The DDS::send() member function takes care of this for the server (however,
look in either this member function of expr-test to send how to do it
yourself). On the client-side the Connect class manages those for you. Use the
Connect::source() member function to get the XDR pointer associated with a
given connection. Then pass that pointer to deserialize. Again, look in
expr-test for example code (at the very last part of constrained_trans()).

Grid variables can now be projected just like arrays. To find out about the
projections, use the Array member functions for constraints on the various
constituents of the Grid (e.g., grab the Array part of the Grid and iterate
over the DIMENSION objects to find the size of that dimension, then look at
the various Map arrays to see which are marked to be sent, etc.). Note that
there is some redundant information in the Grid projection because both the
Array part and the Map part contain the dimension limits (when one or the
other would do). I did this so the existing serialize/deserialize code would
work without modification.

We now use the latest WWW library (from W3C) without modification. You must
have that *and* (until I figure a better way to do it) its source code must
be at /usr/local/src/WWW. Otherwise you will get lots of missing include file
names from the compiler.


OPENDAP/libdap4,OPENDAP/libdap4,OPENDAP/libdap4,OPENDAP/libdap,OPENDAP/libdap,OPENDAP/libdap,OPENDAP/libdap,OPENDAP/libdap4,OPENDAP/libdap4,OPENDAP/libdap4