|
Packit |
a4aae4 |
Updated for version 3.19.1
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Bug fixes; See the ChangeLog and NEWS files.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.18.3
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Bug fixes; See the ChangeLog and NEWS files.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.18.2
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Added support for DAP4 filter operations.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
For other information, see NEWS and ChangeLog
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for 3.16.0
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
libdap now supports parallel I/O for certain data write operations,
|
|
Packit |
a4aae4 |
mostly those involving larger amounts of data - Marshaller::put_vector
|
|
Packit |
a4aae4 |
and put_vector_part. The behavior can be 'turned off' by #undef the
|
|
Packit |
a4aae4 |
symbol USE_POSIX_THREADS in the XDSStreamMarshaller classes.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Added to libdap is the ability to send DAP2 responses in parts, so that
|
|
Packit |
a4aae4 |
code that builds large responses from multiple reads can write a part
|
|
Packit |
a4aae4 |
that is complete and then return to work on the next part. This is
|
|
Packit |
a4aae4 |
especially beneficial for aggregations that cross many granules. The new
|
|
Packit |
a4aae4 |
method is Marshaller::put_vector_part().
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Added to libdap is a virtual void BaseType::clear_local_data() method
|
|
Packit |
a4aae4 |
that can be used to free the memory used by a BaseType to hold data values.
|
|
Packit |
a4aae4 |
This provides a way for the object to persist in memory without holding
|
|
Packit |
a4aae4 |
onto all of its data (which can be a substantial part of the object's
|
|
Packit |
a4aae4 |
total size).
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for 3.14.0
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Bison 3 is required to build this code.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for 3.13.3
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Bug fix release
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for 3.13.2
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Bug fix release
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for 3.13.1
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
A test baseline was updated to use both the DAP2 and DAP4 version of
|
|
Packit |
a4aae4 |
the XDAP/X-DAP header. This change was likely over doing things on our
|
|
Packit |
a4aae4 |
part, but it's important to have the source releases pass all their
|
|
Packit |
a4aae4 |
tests.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated 3.13.0
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Support for clang: Apple LLVM version 5.1 (clang-503.0.40) (based on
|
|
Packit |
a4aae4 |
LLVM 3.4svn) added.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.12.1
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Note that the documented behavior of BaseType::read() is now correctly
|
|
Packit |
a4aae4 |
implemented.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.12.0
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The server functions have been moved out of libdap and into their own
|
|
Packit |
a4aae4 |
BES module. Currently this modules is part of the BES, but that will change
|
|
Packit |
a4aae4 |
in the future. This version of libdap supports building very large arrays
|
|
Packit |
a4aae4 |
made up of constant value (e.g., to be used as masks in server functions
|
|
Packit |
a4aae4 |
you write).
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
For information on the way to make these functions, see:
|
|
Packit |
a4aae4 |
http://docs.opendap.org/index.php/Expanded_arguments_for_Constraint_Expressions
|
|
Packit |
a4aae4 |
Note that this version of libdap requires bison 2.4. This is a change so
|
|
Packit |
a4aae4 |
the parsers can use C++ I/O streams and we can eventually drop the FILE*
|
|
Packit |
a4aae4 |
interfaces.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.11.7
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Minor tweak for the server function caching code: turn on or off the
|
|
Packit |
a4aae4 |
cache by adding or removing the directory /tmp/dap_functions_cache.
|
|
Packit |
a4aae4 |
If the directory is not present no caching of server function calls
|
|
Packit |
a4aae4 |
is done. All the other behaviors are otherwise identical.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.11.6
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
There is a new cache for some kinds of response objects. It's size and
|
|
Packit |
a4aae4 |
location are currently fixed to 20GB bytes and
|
|
Packit |
a4aae4 |
"/tmp/dap_functions_cache/" but these will be made BES parameters in a
|
|
Packit |
a4aae4 |
future release.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.11.5
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
A memory leak in XDRStreamMarshaller was fixed.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
A bug in DDS::add_var_nocopy() was fixed.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.11.2
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Bug fixes and improvements in the implementations of some methods.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.11.1
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Bug fixes only.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.11.0
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Now constraint expressions can have multiple function calls that return data.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
I've bumped up the DAP version from 3.3 to 3.4 to reflect this change.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for Version 3.10.2
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
BaseType::transfer_attributes() and related methods provide a way for
|
|
Packit |
a4aae4 |
handlers to customize how attributes from a DAS object are merged into
|
|
Packit |
a4aae4 |
a DDS.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
In the past we supported a kind of client-side system that could augment
|
|
Packit |
a4aae4 |
the attributes call the 'AIS' (Ancillary Information System). This has
|
|
Packit |
a4aae4 |
been removed - our server now supports the NcML language to do much the same
|
|
Packit |
a4aae4 |
thing but in a way that can be set on the server once for all users. It's also
|
|
Packit |
a4aae4 |
an emerging convention that's gaining wide support within the community.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for Version 3.10.0
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
DAP 3.3 is now supported; see http://docs.opendap.org/index.php/DAP3/4.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This version of libdap contains many changes that are needed for both
|
|
Packit |
a4aae4 |
DAP 4 and the NcML handler. This version of the library is required
|
|
Packit |
a4aae4 |
for the Hyrax 1.6 handlers.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The 'deflate' program is no longer part of this library package since
|
|
Packit |
a4aae4 |
we are no longer supporting the old data server system (based on WWW's
|
|
Packit |
a4aae4 |
CGI specification).
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.9.2
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Now libdap supports DAP 3.2. You can read about the evolving DAP 3.x protocol
|
|
Packit |
a4aae4 |
at http://docs.opendap.org/index.php/DAP3/4. If your client sends the
|
|
Packit |
a4aae4 |
XDAP-Accept header with a value of 3.2 the DDX is different (it includes
|
|
Packit |
a4aae4 |
protocol information and also an xmlbase element).
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Behavior change for the DAS: In the past the format handlers added double
|
|
Packit |
a4aae4 |
quotes to the values of string attributes when they added those values to the
|
|
Packit |
a4aae4 |
AttrTable object. This meant that the value of the attribute in the C++
|
|
Packit |
a4aae4 |
object was actually not correct since it contained quotes not found in the
|
|
Packit |
a4aae4 |
original attribute value. I modified libdap so that if an attribute value in
|
|
Packit |
a4aae4 |
the C++ AttrTable object does not have quotes then those quotes are added
|
|
Packit |
a4aae4 |
when the value is output in a DAS response (but not a DDX since there's no
|
|
Packit |
a4aae4 |
need to quote the value in that response). This ensures that the text in the
|
|
Packit |
a4aae4 |
DAS wire representation will parse whether a handler has added quotes or not
|
|
Packit |
a4aae4 |
(paving the way for fixed handlers). At the same time I fixed all of our
|
|
Packit |
a4aae4 |
handlers so that they no longer add the erroneous quotes. This fixes a
|
|
Packit |
a4aae4 |
problem with the DDX where the quotes were showing up as part of the
|
|
Packit |
a4aae4 |
attribute value. The change to libdap is such that a broken handler will not
|
|
Packit |
a4aae4 |
be any more broken but a fixed handler will work for both DAS and DDX
|
|
Packit |
a4aae4 |
generation.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
If you have a handler and it's not adding quotes to the String attribute
|
|
Packit |
a4aae4 |
values - good, don't change that! If your handler does add quotes, please
|
|
Packit |
a4aae4 |
modify it so the DDX will be correct.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Our handler's old, broken, behavior can be resurrected by removing the
|
|
Packit |
a4aae4 |
ATTR_STRING_QUOTE FIX define in the appropriate files.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.8.2 (23 June 2008)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
HTTP Cache and win32 installer fixes (the latter are actually in the 3.8.1
|
|
Packit |
a4aae4 |
installer for winXP). API change: The functions used to merge ancillary data
|
|
Packit |
a4aae4 |
have been moved to their own class (Ancillary).
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.8.1 (10 June 2008)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The syntax for PROXY_SERVER in the .dodsrc file was relaxed. See the .dodsrc
|
|
Packit |
a4aae4 |
file for more information.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for Version 3.8.0 (29 February 2008)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The libdap classes and code are now inside of the libdap namespace. In order
|
|
Packit |
a4aae4 |
to access any of the classes, for example, you will need to do one of the
|
|
Packit |
a4aae4 |
following. After including the libdap headers you can:
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
1. add a using statement for the entire libdap namespace:
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
using namespace libdap ;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
2. add a using statement for the classes that you will be using:
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
using libdap::DAS ;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
3. inside your code scope the use of libdap classes.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
libdap::DAS *das = code_to_get_das() ;
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Added method to HTTPCache to return not only the FILE pointer of a cached
|
|
Packit |
a4aae4 |
response but also the name of the file in the cache, to allow for this file
|
|
Packit |
a4aae4 |
name to be passed to data handlers in the BES to be read.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
See NEWS for more information about changes for this version and ChangeLog
|
|
Packit |
a4aae4 |
for the gory details.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for Version 3.7.10 (28 November 2007)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
A bug fix release. See NEWS.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for Version 3.7.9 (13 November 2007)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This release is a bug fix and refactoring release. Old classes which were no
|
|
Packit |
a4aae4 |
longer used have been removed, the FILE* output methods are slated to be
|
|
Packit |
a4aae4 |
replaced with ones which will use iostream and will support a chucked
|
|
Packit |
a4aae4 |
transfer 'Marshaller,' and the transfer_data() methods have been made a
|
|
Packit |
a4aae4 |
formal part of the library, implemented for all classes, fixed and renamed to
|
|
Packit |
a4aae4 |
intern_data(). Many bugs in the library were also fixed.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Updated for version 3.7.8 (26 June 2007)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The major fixes in this version are memory errors found and fixed in the
|
|
Packit |
a4aae4 |
Regex class and HTTP header processing software. This version also supports
|
|
Packit |
a4aae4 |
pkg-config on hosts that have that installed.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
See NEWS for more information about changes for this version and ChangeLog
|
|
Packit |
a4aae4 |
for the gory details.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Notes for version 3.7.7 (2 May 2007)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The major fix here is to the source build. We've fixed the issue where source
|
|
Packit |
a4aae4 |
builds failed to make the dapserver and dapclient libraries.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Notes for version 3.7.6 (12 March 2007)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Two bug fixes, both minor. Problems in the linear_scale() constraint
|
|
Packit |
a4aae4 |
expression function and a bad/missing #include in GNURegex.h were fixed.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
There was an error in the INSTALL file sent out in the previous release. It
|
|
Packit |
a4aae4 |
said this library implemented DAP version 3.2, but in fact it implements
|
|
Packit |
a4aae4 |
version 3.1. The version 3.2 release will be along soon (RSN).
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Notes for version 3.7.5 (7 Feb 2007)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This version includes many fixes from the first Server4 beta release
|
|
Packit |
a4aae4 |
plus fixes for the server-side functions. It also includes a smoother
|
|
Packit |
a4aae4 |
Win32 build.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Notes for version 3.7.4 (2 Jan 2007)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Release for the Server4 beta release.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Notes for version 3.7.3 (24 Nov 2006)
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This version of libdap contains a beta release of the server-side functions
|
|
Packit |
a4aae4 |
geogrid(), geoarray(), linear_scale() and version(). These can be used to
|
|
Packit |
a4aae4 |
select parts of Grids and Arrays using latitude and longitude values instead
|
|
Packit |
a4aae4 |
of array position indexes. The linear_scale() function can be used to scale
|
|
Packit |
a4aae4 |
variables (including those return by other function) using 'y = mx + b'. The
|
|
Packit |
a4aae4 |
version() function can be used to find out which versions of the functions are
|
|
Packit |
a4aae4 |
installed.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
EXAMPLES
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
To get version information use the 'version()' function. Currently, version()
|
|
Packit |
a4aae4 |
can only be called when asking for data, and you must give the name of a data
|
|
Packit |
a4aae4 |
source, although in the default version of version() the data source is not
|
|
Packit |
a4aae4 |
used. The version function takes one optional argument which may be the strings
|
|
Packit |
a4aae4 |
'help' or 'xml'. Use 'help' to get help on using the function; use 'xml' to get
|
|
Packit |
a4aae4 |
version information encoded using XML instead of plain text:
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
[jimg@zoe libdap]$ url=http://test.opendap.org/dap/data/nc/coads_climatology.nc
|
|
Packit |
a4aae4 |
[jimg@zoe libdap]$ ./getdap -D "$url?version()"
|
|
Packit |
a4aae4 |
The data:
|
|
Packit |
a4aae4 |
String version = "Function set: version 1.0, grid 1.0, geogrid 1.0b2,
|
|
Packit |
a4aae4 |
geoarray 0.9b1, linear_scale 1.0b1";
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
[jimg@zoe libdap]$ ./getdap -D "$url?version(help)"
|
|
Packit |
a4aae4 |
The data:
|
|
Packit |
a4aae4 |
String version = "Usage: version() returns plain text information about ...
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
[jimg@zoe libdap]$ ./getdap -D "$url?version(xml)"
|
|
Packit |
a4aae4 |
The data:
|
|
Packit |
a4aae4 |
String version = "
|
|
Packit |
a4aae4 |
<functions>
|
|
Packit |
a4aae4 |
<function name=\"version\" version=\"1.0\"/>
|
|
Packit |
a4aae4 |
<function name=\"grid\" version=\"1.0\"/>
|
|
Packit |
a4aae4 |
<function name=\"geogrid\" version=\"1.0\"/>
|
|
Packit |
a4aae4 |
<function name=\"geoarray\" version=\"1.0\"/>
|
|
Packit |
a4aae4 |
<function name=\"linear_scale\" version=\"1.0\"/>
|
|
Packit |
a4aae4 |
</functions>";
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The geogrid function can only be used with variables that are Grids:
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
[jimg@zoe libdap]$ getdap -d "$url"
|
|
Packit |
a4aae4 |
Dataset {
|
|
Packit |
a4aae4 |
Float64 COADSX[COADSX = 180];
|
|
Packit |
a4aae4 |
Float64 COADSY[COADSY = 90];
|
|
Packit |
a4aae4 |
Float64 TIME[TIME = 12];
|
|
Packit |
a4aae4 |
Grid {
|
|
Packit |
a4aae4 |
Array:
|
|
Packit |
a4aae4 |
Float32 SST[TIME = 12][COADSY = 90][COADSX = 180];
|
|
Packit |
a4aae4 |
Maps:
|
|
Packit |
a4aae4 |
Float64 TIME[TIME = 12];
|
|
Packit |
a4aae4 |
Float64 COADSY[COADSY = 90];
|
|
Packit |
a4aae4 |
Float64 COADSX[COADSX = 180];
|
|
Packit |
a4aae4 |
} SST;
|
|
Packit |
a4aae4 |
Grid {
|
|
Packit |
a4aae4 |
.
|
|
Packit |
a4aae4 |
.
|
|
Packit |
a4aae4 |
.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Pass the name of the Grid variable and the upper-left and lower-right corners
|
|
Packit |
a4aae4 |
of the lat/lon rectangle to geogrid. Optionally, pass one or more relational
|
|
Packit |
a4aae4 |
expressions to select parts of dimensions that are not lat/lon.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Note: in libdap 3.7.3 calling geogrid with a constraint on each dimension
|
|
Packit |
a4aae4 |
may return incorrect values that indicate missing data even though data should
|
|
Packit |
a4aae4 |
have been returned.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
[jimg@zoe libdap]$ getdap -D "$url?geogrid(SST,30,-60,20,-60,\"TIME=366\")"
|
|
Packit |
a4aae4 |
The data:
|
|
Packit |
a4aae4 |
Grid {
|
|
Packit |
a4aae4 |
Array:
|
|
Packit |
a4aae4 |
Float32 SST[TIME = 1][COADSY = 7][COADSX = 2];
|
|
Packit |
a4aae4 |
Maps:
|
|
Packit |
a4aae4 |
Float64 TIME[TIME = 1];
|
|
Packit |
a4aae4 |
Float64 COADSY[COADSY = 7];
|
|
Packit |
a4aae4 |
Float64 COADSX[COADSX = 2];
|
|
Packit |
a4aae4 |
} SST = { Array: {{{24.4364, 25.0923},{23.7465, 24.4146},{19.843, 23.6033},
|
|
Packit |
a4aae4 |
{16.8464, 17.7756},{16.65, 16.818},{-1e+34, 15.3656},{18.7214, 13.1286}}}
|
|
Packit |
a4aae4 |
Maps: {366}, {19, 21, 23, 25, 27, 29, 31}, {-61, -59} };
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The geoarray() function works like geogrid() except that it's used to select
|
|
Packit |
a4aae4 |
from an Array variable and not a Grid. In addition to the four lat/lon values
|
|
Packit |
a4aae4 |
for selection rectangle, the caller must supply the data's corner points. A
|
|
Packit |
a4aae4 |
subsequent release of libdap will include a version that reads the data extent
|
|
Packit |
a4aae4 |
from the data source when possible so caller's won't normally have to know the
|
|
Packit |
a4aae4 |
data's extent ahead of time.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The linear_scale() function take either one or three arguments. The first
|
|
Packit |
a4aae4 |
(only) argument is the name of a variable or the return from another
|
|
Packit |
a4aae4 |
function. This variable will be scaled using the 'y = mx + b' equation where
|
|
Packit |
a4aae4 |
'x' is the value(s) of the input variable and 'm' and 'b' are read from the
|
|
Packit |
a4aae4 |
data source using the values of attributes name 'scale_factor' and
|
|
Packit |
a4aae4 |
'add_offset.' If these are not present, or to over ride their values, m and b
|
|
Packit |
a4aae4 |
can be supplied using the second and third arguments.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Note that there are still some problems with linear_scale() in this release.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
See NEWS and ChangeLog for information about other changes
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Notes for version 3.7.2
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This version of libdap is required for the 9/15/06 alpha release of Server4.
|
|
Packit |
a4aae4 |
The library now contains software which enables Server4 to build the ASCII
|
|
Packit |
a4aae4 |
data response for all types of variables, including Sequence and nested
|
|
Packit |
a4aae4 |
Sequence variables. These features are additions to the API, so older code
|
|
Packit |
a4aae4 |
will work just fine with the new library. See NEWS for more specific info
|
|
Packit |
a4aae4 |
about bug fixes.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Notes for version 3.7.1
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This is a bug fix release (mostly) made for users of the netcdf client
|
|
Packit |
a4aae4 |
library who need a fix for a problem dealing with attributes from the HDF4
|
|
Packit |
a4aae4 |
server.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
NOTES for version 3.7.0
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This version includes new features and an implementation change.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This version of libdap now returns the DAP protocol version number, 3.1, in
|
|
Packit |
a4aae4 |
an HTTP response header. Use this to determine which protocol version the
|
|
Packit |
a4aae4 |
library implements. The inclusion of a protocol version number is the sole
|
|
Packit |
a4aae4 |
official new feature of DAP 3.1. Use Connect::get_protocol() to get the
|
|
Packit |
a4aae4 |
version number. Clients can use this to determine the features supported by a
|
|
Packit |
a4aae4 |
server. The Connect::get_version() method can still be used to get our
|
|
Packit |
a4aae4 |
server's implementation version. The distinction is that as more groups
|
|
Packit |
a4aae4 |
provide their own implementations of the DAP, the protocol version will
|
|
Packit |
a4aae4 |
provide a way for clients to determine capabilities independently of
|
|
Packit |
a4aae4 |
implementation.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The libdap library now contains an implementation of the DDX object/response,
|
|
Packit |
a4aae4 |
although this is an alpha implementation and it's actually been part of the
|
|
Packit |
a4aae4 |
library for some time now. The implementation contained in this version of
|
|
Packit |
a4aae4 |
the library is close enough to the version we intend for DAP4 that developers
|
|
Packit |
a4aae4 |
can start to use it. Most of the server handlers will return DDXs when asked.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The DDX combines the information previously held by the DDS and DAS objects,
|
|
Packit |
a4aae4 |
making it much easier to associate attributes to variables. As the name
|
|
Packit |
a4aae4 |
suggests, the DDX uses XML rather than curly-braces. You can drop the DDX
|
|
Packit |
a4aae4 |
into your favorite XML parser and get a DOM tree; no need to use our parsers.
|
|
Packit |
a4aae4 |
However, libdap contains a nice SAX parser that will build the libdap objects
|
|
Packit |
a4aae4 |
directly from the XML DDX object/response. Also included in libdap are
|
|
Packit |
a4aae4 |
methods to build a DDX using a DDS and DAS, so there's an easy migration path
|
|
Packit |
a4aae4 |
for both servers and clients.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Finally, the library contains two structural changes. First, the library
|
|
Packit |
a4aae4 |
named 'libdap' now holds the DAP implementation while two new libraries,
|
|
Packit |
a4aae4 |
'libdapclient' and 'libdapserver', now hold the client and server helper
|
|
Packit |
a4aae4 |
classes which are not strictly part of the DAP. Secondly, the DDS/DDX object
|
|
Packit |
a4aae4 |
now takes the constraint evaluator as a parameter. The class
|
|
Packit |
a4aae4 |
ConstraintEvaluator holds our default evaluator, but it's now possible to use
|
|
Packit |
a4aae4 |
your own evaluator .
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
NOTES for version 3.6.1
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Version 3.6.1 is bug fix release.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
NOTES for version 3.6.0
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This version of the library may not work older source code. Many of the
|
|
Packit |
a4aae4 |
deprecated methods have been removed.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
Added are headers which send information about the version of the DAP protocol
|
|
Packit |
a4aae4 |
that the library implements (in contrast to the implementation of the library
|
|
Packit |
a4aae4 |
itself). A new header named XOPeNDAP-Server is used to send information about
|
|
Packit |
a4aae4 |
the implementation of servers.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The libtool interface version has been incremented from 3 to 4 (these versions
|
|
Packit |
a4aae4 |
do no track the software's release version since several releases might
|
|
Packit |
a4aae4 |
present compatible binary interfaces).
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
NOTES for version 3.5.3
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This version of libdap++ cannot be used to build the 3.4.x and previous
|
|
Packit |
a4aae4 |
clients and/or servers. However, client and servers built using this code
|
|
Packit |
a4aae4 |
_will_ work with the older clients and servers.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
WHAT'S IN THIS DIRECTORY?
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This directory contains the OPeNDAP C++ implementation of the Data
|
|
Packit |
a4aae4 |
Access Protocol version 2 (DAP2) with some extensions that will be
|
|
Packit |
a4aae4 |
part of DAP3. Documentation for this software can be found on the
|
|
Packit |
a4aae4 |
OPeNDAP home page at http://www.opendap.org/. The NASA/ESE RFC which
|
|
Packit |
a4aae4 |
describes DAP2, implemented by the library, can be found at
|
|
Packit |
a4aae4 |
http://spg.gsfc.nasa.gov/rfc/004/.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The DAP2 is used to provide a uniform way of accessing a variety of
|
|
Packit |
a4aae4 |
different types of data across the Internet. It was originally part of
|
|
Packit |
a4aae4 |
the DODS and then NVODS projects. The focus of those projects was
|
|
Packit |
a4aae4 |
access to Earth-Science data, so much of the software developed using
|
|
Packit |
a4aae4 |
the DAP2 to date has centered on that discipline. However, the DAP2
|
|
Packit |
a4aae4 |
data model is very general (and similar to a modern structured
|
|
Packit |
a4aae4 |
programming language) so it can be applied to a wide variety of
|
|
Packit |
a4aae4 |
fields.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The DAP2 is implemented as a set of C++ classes that can be used to
|
|
Packit |
a4aae4 |
build data servers and clients. The classes may be specialized to
|
|
Packit |
a4aae4 |
mimic the behavior of other data access APIs, such as netCDF. In this
|
|
Packit |
a4aae4 |
way, programs originally meant to work with local data in those
|
|
Packit |
a4aae4 |
formats can be re-linked and equipped to work with data stored
|
|
Packit |
a4aae4 |
remotely in many different formats. The classes can also by
|
|
Packit |
a4aae4 |
specialized to build standalone client programs.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The DAP2 is contained in a single library: libdap++.a. Also included
|
|
Packit |
a4aae4 |
in the library are classes and utility functions which simplify
|
|
Packit |
a4aae4 |
building clients and servers.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
WHAT ELSE IS THERE?
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The file README.dodsrc describes the client-side behavior which can be
|
|
Packit |
a4aae4 |
controlled using the .dodsrc file. This includes client-side caching,
|
|
Packit |
a4aae4 |
proxy servers, et c., and is described in a separate file so it's easy
|
|
Packit |
a4aae4 |
to include in your clients.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The file README.AIS describes the prototype Ancillary Information
|
|
Packit |
a4aae4 |
Service (AIS) included in this version of the library. The AIS is
|
|
Packit |
a4aae4 |
(currently) a client-side capability which provides a way to augment
|
|
Packit |
a4aae4 |
DAP attributes. This is a very useful feature because it can be used
|
|
Packit |
a4aae4 |
to add missing metadata to a data source. The AIS is accessed by using
|
|
Packit |
a4aae4 |
the AISConnect class in place of Connect in your client.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
This directory also contains test programs for the DAP2, a sample
|
|
Packit |
a4aae4 |
specialization of the classes, getdap (a useful command-line web
|
|
Packit |
a4aae4 |
client created with DAP2) and dap-config (a utility script to simplify
|
|
Packit |
a4aae4 |
linking with libdap.a). Also included as of version 3.5.2 is
|
|
Packit |
a4aae4 |
libdap.m4, an autoconf macro which developers can use along with
|
|
Packit |
a4aae4 |
autoconf to test for libdap. This macro will be installed in
|
|
Packit |
a4aae4 |
${prefix}/share/aclocal and can be by any package which uses autoconf
|
|
Packit |
a4aae4 |
for its builds. See the file for more information.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
We also have Java and C versions of the DAP2 library which
|
|
Packit |
a4aae4 |
inter-operate with software which uses this library. In other words,
|
|
Packit |
a4aae4 |
client programs built with the Java DAP2 implementation can
|
|
Packit |
a4aae4 |
communicate with servers built with this (C++) implementation of the
|
|
Packit |
a4aae4 |
DAP2. The C DAP2 library, called the Ocapi, only implements the
|
|
Packit |
a4aae4 |
client-side part of the protocol. Clients written using the Ocapi are
|
|
Packit |
a4aae4 |
interoperable with both the Java and C++ DAP2 libraries. Note that the
|
|
Packit |
a4aae4 |
Ocapi is in early beta and available only from CVS at this time (5 May
|
|
Packit |
a4aae4 |
2005).
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
THREAD SAFETY
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
We don't need to do this since the STL is also not thread safe. Users
|
|
Packit |
a4aae4 |
of libdap have to be sure that multiple threads never make
|
|
Packit |
a4aae4 |
simultaneous and/or overlapping calls to a single copy of libdap. If
|
|
Packit |
a4aae4 |
several threads are part of a program and each will make calls to
|
|
Packit |
a4aae4 |
libdap, either those threads must synchronize their calls or arrange
|
|
Packit |
a4aae4 |
to each use their own copy of libdap. Some aspects of the library
|
|
Packit |
a4aae4 |
are thread-safe: the singleton classes are all protected as is the
|
|
Packit |
a4aae4 |
HTTP cache (which uses the local file system).
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
INSTALLATION INSTRUCTIONS
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
See the file INSTALL in this directory for information on building the
|
|
Packit |
a4aae4 |
library and the geturl client.
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
COPYRIGHT INFORMATION
|
|
Packit |
a4aae4 |
|
|
Packit |
a4aae4 |
The OPeNDAP DAP library is copyrighted using the GNU Lesser GPL. See
|
|
Packit |
a4aae4 |
the file COPYING or contact the Free Software Foundation, Inc., at 59
|
|
Packit |
a4aae4 |
Temple Place, Suite 330, Boston, MA 02111-1307 USA. Older versions of
|
|
Packit |
a4aae4 |
the DAP were copyrighted by the University of Rhode Island and
|
|
Packit |
a4aae4 |
Massachusetts Institute of Technology; see the file COPYRIGHT_URI. The
|
|
Packit |
a4aae4 |
file deflate.c is also covered by COPYRIGHT_W3C.
|