Warning: This PR is a follow on to PR https://github.com/Unidata/netcdf-c/pull/2555 and should not be merged until that prior PR has been merged. The changeset for this PR is a delta on the PR https://github.com/Unidata/netcdf-c/pull/2555.
This PR re-enables the use of the server *remotetest.unidata.ucar.edu/d4ts*
to test several features:
1. Show that access over the Internet to servers using the DAP4 protocol works.
2. Test that DAP4 support in the [Thredds Data Server](https://github.com/Unidata/tds) is operating correctly.
4. Test that the DAP4 support in the [netcdf-java library](https://github.com/Unidata/netcdf-java) library and the DAP4 support in the netcdf-c library are consistent and are interoperable.
The test inputs (primarily *\*.nc* files) provided in the netcdf-c library
are also used by the DAP4 Test Server (aka d4ts) to present web access to a
collection of data files accessible via the DAP4 protocol and which can be
used for testing Internet access to a working server.
To be precise, this version of d4ts is currently in unmerged branches
of the *netcdf-java* and *tds* Github repositories and so are not actually
in the main repositories *yet*. However, the *d4ts.war* file was created
from that branch and used to populate the *remotetest.unidata.ucar.edu*
server
The two other remote servers that were used in the past are *Hyrax* (OPenDAP.org)
and *thredds-test*. These will continue to remain disabled until
those servers can be fixed.
## Primary Changes
* Rebuild the *baselineremote* directory. This directory contains the validation data needed to test the remote servers.
* Re-enable using remotetest.unidata.ucar.edu as part of the DAP4 testing process.
* Fix the *dap4_test/test_remote.sh* test script to match the current available test data.
* Make some changes to libdap4 to improve the ability to catch malformed data streams [affects a lot of files in libdap4].
## Misc. Unrelated Changes
* Remove a raft of warnings, especially in nc_test4/tst_quantize.c.
* Add some additional explanatory information to the NCZarr documentation.
* Cleanup some Doxygen errors in the docs file and reorder some files.
Update the following documentation files:
## docs/FAQ.md
* Discuss the use of UTF-8 names under Windows 10+.
## docs/filters.md
* Add documentation about NCzarr filters.
* Specifically Codec support and HDF5 <-> Codec translation
* Add documentation about standard filters
## docs/dispatch.md
* Convert from .dox format to .md (markdown) format.
* Add discussion about the user defined dispatch tables.
* Update the example.
* Abbreviate the NC_infermodel documentation and move the more detailed discusion to the companion *dinternal.md* documenation.
## docs/internal.md
This is a (mostly) new file that attempts to provide detailed
descriptions about how various features are implemented inside
the netcdf-c library. The topics currently covered the
following.
### Including C++ Code in the netcdf-c Library {#intern_c++}
The state of C compiler technology has reached the point where
it is possible to include C++ code into the netcdf-c library
code base. The document describes how to do this.
### Managing instances of complex data types
The document describes how to properly handle instances of
complex types (those with variable length). This involves
having functions that can recursively walk instances of such
types to perform various actions on them. These new functions
are intended to replace the *nc_free_vlen*, *nc_free_vlens* and
*nc_free_string* functions in *netcdf.h*.
### Inferring File Types
As described in the companion document -- docs/dispatch.md --
when *nc\_create()* or *nc\_open()* is called, the library must
figure out what kind of file is being created or opened. Once it
has figured out the file kind, the appropriate "dispatch table"
can be used to process that file.
As a result of the introduction of remote data access to the netcdf-c
library, the path arguments to *nc\_open()* and *nc\_create()* have
been extended to support URLs as paths. Processing URLs requires
some significant changes to the file inference algorithm. The
details of that processing are recorded in the document.