• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

GNU/H17-Sep-2021-660288

OSX_Resources/H03-May-2022-192135

VCPP/H07-May-2022-1,255892

conf/H17-Sep-2021-27,46522,177

d4_ce/H03-May-2022-6,3844,711

d4_function/H03-May-2022-7,0815,408

gl/H03-May-2022-41,07931,749

tests/H03-May-2022-111,76593,240

unit-tests/H03-May-2022-87,64178,282

AlarmHandler.hH A D01-Dec-20202.8 KiB9533

Ancillary.ccH A D08-Jul-20197.6 KiB241130

Ancillary.hH A D01-Dec-20202.1 KiB7227

Array.ccH A D12-Aug-202145.6 KiB1,352705

Array.hH A D12-Aug-202110.7 KiB297123

AttrTable.ccH A D01-Dec-202052.6 KiB1,561955

AttrTable.hH A D08-Jul-201910.8 KiB354191

BaseType.ccH A D12-Aug-202146.7 KiB1,305489

BaseType.hH A D12-Aug-202123.2 KiB595139

BaseTypeFactory.ccH A D08-Jul-20193.4 KiB167120

BaseTypeFactory.hH A D08-Jul-20194.4 KiB12848

Byte.ccH A D12-Aug-202111.2 KiB392204

Byte.hH A D12-Aug-20213 KiB10944

COPYINGH A D08-Jul-201925.9 KiB509421

COPYRIGHT_URIH A D08-Jul-20191.8 KiB3327

COPYRIGHT_W3CH A D08-Jul-20192.5 KiB5139

ChangeLogH A D17-Sep-2021587.8 KiB16,0839,834

Clause.ccH A D01-Dec-20207.2 KiB249136

Clause.hH A D08-Jul-20194 KiB13235

Connect.ccH A D08-Jul-201936.2 KiB1,208743

Connect.hH A D08-Jul-20197.1 KiB22583

ConstraintEvaluator.ccH A D01-Dec-202011.8 KiB384186

ConstraintEvaluator.hH A D08-Jul-20193.3 KiB10148

Constructor.ccH A D12-Aug-202125.8 KiB932627

Constructor.hH A D12-Aug-20215.5 KiB16090

D4AsyncUtil.ccH A D01-Dec-202015.5 KiB357219

D4AsyncUtil.hH A D08-Jul-20192.3 KiB8728

D4AttributeType.hH A D08-Jul-20191.8 KiB6826

D4Attributes.ccH A D06-May-202116.8 KiB584414

D4Attributes.hH A D01-Dec-20205.1 KiB17594

D4BaseTypeFactory.ccH A D08-Jul-20196.1 KiB299214

D4BaseTypeFactory.hH A D08-Jul-20193.3 KiB12461

D4Connect.ccH A D01-Dec-202016.3 KiB515321

D4Connect.hH A D08-Jul-20193.7 KiB11752

D4Dimensions.ccH A D08-Jul-20194.3 KiB14383

D4Dimensions.hH A D01-Dec-20206.8 KiB19590

D4Enum.ccH A D12-Aug-202119.4 KiB706552

D4Enum.hH A D12-Aug-20216.1 KiB20192

D4EnumDefs.ccH A D08-Jul-20195.1 KiB13785

D4EnumDefs.hH A D01-Dec-20205.4 KiB190110

D4FilterClause.ccH A D08-Jul-20196.2 KiB213109

D4FilterClause.hH A D08-Jul-20195.9 KiB20386

D4Function.hH A D08-Jul-20191.6 KiB479

D4Group.ccH A D12-Aug-202125.3 KiB797452

D4Group.hH A D12-Aug-20214.7 KiB15272

D4Maps.ccH A D08-Jul-20191.7 KiB5422

D4Maps.hH A D08-Jul-20194.9 KiB15271

D4Opaque.ccH A D12-Aug-20214.2 KiB186109

D4Opaque.hH A D12-Aug-20213.5 KiB11154

D4ParserSax2.ccH A D01-Dec-202049.2 KiB1,421872

D4ParserSax2.hH A D01-Dec-202012.2 KiB332184

D4RValue.ccH A D12-Aug-20219.3 KiB321198

D4RValue.hH A D01-Dec-20204.6 KiB16286

D4Sequence.ccH A D12-Aug-202118.4 KiB592318

D4Sequence.hH A D12-Aug-202111 KiB31176

D4StreamMarshaller.ccH A D12-Aug-202124.2 KiB827568

D4StreamMarshaller.hH A D12-Aug-20215.6 KiB17984

D4StreamUnMarshaller.ccH A D12-Aug-202112.3 KiB476339

D4StreamUnMarshaller.hH A D12-Aug-20215.1 KiB16585

DAS.ccH A D08-Jul-20199.2 KiB385193

DAS.hH A D08-Jul-20196.6 KiB20148

DDS.ccH A D12-Aug-202163.4 KiB1,8971,142

DDS.hH A D12-Aug-202114.5 KiB427161

DDXExceptions.hH A D08-Jul-20191.5 KiB5018

DDXParserSAX2.ccH A D01-Dec-202042.4 KiB1,242872

DDXParserSAX2.hH A D01-Dec-20209 KiB269145

DMR.ccH A D12-Aug-202119.7 KiB567308

DMR.hH A D12-Aug-20217.8 KiB24282

DODSFilter.ccH A D08-Jul-201940 KiB1,191628

DODSFilter.hH A D08-Jul-20198.9 KiB239130

DapIndent.ccH A D08-Jul-20191.9 KiB8841

DapIndent.hH A D08-Jul-20191.8 KiB6822

DapObj.hH A D08-Jul-20192.5 KiB8720

DapXmlNamespaces.ccH A D08-Jul-20190 10

DapXmlNamespaces.hH A D08-Jul-20193.7 KiB14468

DataDDS.ccH A D01-Dec-20205.2 KiB16984

DataDDS.hH A D08-Jul-20194.6 KiB14863

EncodingType.hH A D08-Jul-20191.6 KiB5913

Error.ccH A D12-Aug-20217.5 KiB258127

Error.hH A D12-Aug-20216 KiB16461

Error.lexH A D08-Jul-20194.4 KiB180103

Error.tab.ccH A D20-Aug-202145.7 KiB1,5601,000

Error.tab.hhH A D20-Aug-20213.3 KiB12153

Error.yyH A D01-Dec-20203.5 KiB145110

EventHandler.hH A D08-Jul-20192.2 KiB7726

Float32.ccH A D12-Aug-20218.8 KiB338199

Float32.hH A D12-Aug-20213 KiB11046

Float64.ccH A D12-Aug-20219.4 KiB346200

Float64.hH A D12-Aug-20213 KiB10845

Grid.ccH A D08-Jul-201933.8 KiB1,045582

Grid.hH A D08-Jul-20196.6 KiB20675

HTTPCache.ccH A D08-Jul-201952.5 KiB1,619852

HTTPCache.hH A D08-Jul-20198.8 KiB245106

HTTPCacheDisconnectedMode.hH A D08-Jul-20191.9 KiB5611

HTTPCacheInterruptHandler.hH A D08-Jul-20192.7 KiB9637

HTTPCacheMacros.hH A D08-Jul-20191.7 KiB7250

HTTPCacheResponse.hH A D08-Jul-20193.2 KiB9237

HTTPCacheTable.ccH A D08-Jul-201927.5 KiB888534

HTTPCacheTable.hH A D08-Jul-201911 KiB370247

HTTPConnect.ccH A D06-Jan-202137.2 KiB1,092663

HTTPConnect.hH A D01-Dec-20204.9 KiB16578

HTTPResponse.hH A D01-Dec-20205.9 KiB17573

INSTALLH A D17-Sep-20217 KiB151114

Int16.ccH A D12-Aug-20218.3 KiB326196

Int16.hH A D12-Aug-20212.9 KiB10746

Int32.ccH A D12-Aug-20218.6 KiB335201

Int32.hH A D12-Aug-20213 KiB11348

Int64.ccH A D12-Aug-20217.5 KiB299176

Int64.hH A D12-Aug-20212.7 KiB9744

Int8.ccH A D12-Aug-20217.3 KiB266156

Int8.hH A D12-Aug-20212.7 KiB9042

InternalErr.ccH A D12-Aug-20213 KiB10850

InternalErr.hH A D12-Aug-20212.8 KiB9621

Keywords2.ccH A D08-Jul-20196.1 KiB210105

Keywords2.hH A D08-Jul-20192.9 KiB9029

Makefile.amH A D12-Aug-202111.7 KiB355208

Makefile.inH A D03-May-2022188.3 KiB3,0852,730

Marshaller.hH A D12-Aug-20213.3 KiB10938

MarshallerThread.ccH A D01-Dec-202010.6 KiB328182

MarshallerThread.hH A D01-Dec-20205.3 KiB16367

NEWSH A D17-Sep-202139.9 KiB985698

ObjectType.hH A D08-Jul-20192.1 KiB7619

Operators.hH A D01-Dec-20205.8 KiB197115

PipeResponse.hH A D08-Jul-20192.5 KiB9336

RCReader.ccH A D08-Jul-201917.9 KiB475299

RCReader.hH A D08-Jul-201910.1 KiB363234

README.dodsrcH A D08-Jul-20196.6 KiB151116

README.mdH A D17-Sep-202122.6 KiB552412

RValue.ccH A D08-Jul-20195 KiB18489

RValue.hH A D08-Jul-20192.7 KiB8836

Resource.hH A D08-Jul-20194.7 KiB15756

Response.hH A D08-Jul-20194.4 KiB13051

ResponseTooBigErr.ccH A D08-Jul-20191.4 KiB4916

ResponseTooBigErr.hH A D08-Jul-20191.6 KiB5616

Sequence.ccH A D12-Aug-202146.3 KiB1,300648

Sequence.hH A D12-Aug-202110.6 KiB31396

ServerFunction.ccH A D08-Jul-20193 KiB9957

ServerFunction.hH A D08-Jul-20195 KiB15269

ServerFunctionsList.ccH A D08-Jul-201910.3 KiB276124

ServerFunctionsList.hH A D08-Jul-20192.6 KiB8536

SignalHandler.ccH A D08-Jul-20197 KiB230121

SignalHandler.hH A D08-Jul-20194.4 KiB11830

SignalHandlerRegisteredErr.hH A D08-Jul-20191.8 KiB6425

StdinResponse.hH A D08-Jul-20192.5 KiB8323

Str.ccH A D12-Aug-20219.3 KiB361197

Str.hH A D12-Aug-20213.4 KiB11641

Structure.ccH A D01-Dec-202018.3 KiB715466

Structure.hH A D12-Nov-20193.6 KiB11128

Type.hH A D08-Jul-20192.8 KiB12834

UInt16.ccH A D12-Aug-20218.1 KiB314189

UInt16.hH A D12-Aug-20212.9 KiB10544

UInt32.ccH A D12-Aug-20218.1 KiB316189

UInt32.hH A D12-Aug-20212.9 KiB10744

UInt64.ccH A D12-Aug-20218.5 KiB305187

UInt64.hH A D12-Aug-20212.8 KiB9745

UnMarshaller.hH A D12-Aug-20212.5 KiB8633

Url.ccH A D08-Jul-20192.2 KiB7517

Url.hH A D08-Jul-20192.1 KiB9434

Vector.ccH A D12-Aug-202168.1 KiB2,0971,250

Vector.hH A D12-Aug-202110.3 KiB283139

XDRFileMarshaller.ccH A D12-Aug-20215.4 KiB189126

XDRFileMarshaller.hH A D12-Aug-20212.5 KiB8635

XDRFileUnMarshaller.ccH A D12-Aug-20215 KiB199133

XDRFileUnMarshaller.hH A D12-Aug-20212.6 KiB8635

XDRStreamMarshaller.ccH A D12-Aug-202120.1 KiB626391

XDRStreamMarshaller.hH A D12-Aug-20213 KiB10743

XDRStreamUnMarshaller.ccH A D12-Aug-20219.8 KiB341230

XDRStreamUnMarshaller.hH A D12-Aug-20212.9 KiB9640

XDRUtils.ccH A D01-Dec-20205 KiB17678

XDRUtils.hH A D08-Jul-20192.1 KiB7226

XMLWriter.ccH A D01-Dec-20204.7 KiB14568

XMLWriter.hH A D08-Jul-20191.6 KiB6322

abi_checker.xml.inH A D08-Jul-2019470 189

aclocal.m4H A D17-Sep-202143.9 KiB1,2451,137

ce_expr.lexH A D01-Dec-20206.8 KiB249140

ce_expr.tab.ccH A D20-Aug-202194.3 KiB3,1022,242

ce_expr.tab.hhH A D20-Aug-20217 KiB243150

ce_expr.yyH A D12-Aug-202139 KiB1,4751,249

ce_parser.hH A D08-Jul-2019595 4233

cgi_util.hH A D08-Jul-2019225 164

chunked_istream.ccH A D01-Dec-202015 KiB403193

chunked_istream.hH A D01-Dec-20205.7 KiB15957

chunked_ostream.ccH A D01-Dec-202010.8 KiB341121

chunked_ostream.hH A D08-Jul-20196.2 KiB16547

chunked_stream.hH A D01-Dec-2020783 3112

config.h.inH A D17-Sep-202143.1 KiB1,4251,026

config_dap.hH A D08-Jul-2019444 2111

configureH A D03-May-2022954.3 KiB33,63627,784

configure.acH A D17-Sep-202120.9 KiB590488

coverage.mkH A D06-Jan-2021687 307

crc.hH A D08-Jul-20194.4 KiB11787

dap-config-pkgconfigH A D08-Jul-20191.5 KiB8762

dap-config.inH A D12-Aug-20212.2 KiB10067

dap-config.man1H A D08-Jul-20191.1 KiB4843

das.lexH A D08-Jul-20196.8 KiB224122

das.tab.ccH A D20-Aug-202164.6 KiB2,1271,477

das.tab.hhH A D20-Aug-20213.5 KiB12959

das.yyH A D01-Dec-202015 KiB558460

dds.lexH A D08-Jul-20195.2 KiB197109

dds.tab.ccH A D20-Aug-202163.5 KiB2,0991,459

dds.tab.hhH A D20-Aug-20213.8 KiB14475

dds.yyH A D01-Dec-202013.7 KiB515442

debug.hH A D08-Jul-20192.3 KiB8334

dods-datatypes-config.h.inH A D08-Jul-20191.6 KiB6243

dods-datatypes-static.hH A D08-Jul-2019572 3918

dods-datatypes.hH A D08-Jul-2019572 3918

dods-limits.hH A D08-Jul-20193.1 KiB9944

doxy.conf.inH A D08-Jul-2019104.1 KiB2,4411,890

escaping.ccH A D28-Jun-202115.2 KiB500249

escaping.hH A D08-Jul-20192.8 KiB8828

expr.hH A D01-Dec-20206.3 KiB19699

getdap.ccH A D01-Dec-202016.1 KiB488377

getdap.man1H A D08-Jul-20192.4 KiB10895

getdap4.ccH A D12-Aug-202115.9 KiB481367

getdap4.man1H A D08-Jul-20192.4 KiB10086

lex.Error.ccH A D20-Aug-202151 KiB2,0011,250

lex.ce_expr.ccH A D20-Aug-202154.2 KiB2,0931,322

lex.das.ccH A D20-Aug-202158 KiB2,1721,384

lex.dds.ccH A D20-Aug-202155.8 KiB2,1201,350

libdap.pc.inH A D08-Jul-2019377 1613

libdap.specH A D17-Sep-20214.4 KiB153112

libdap.spec.inH A D06-May-20214.5 KiB153115

libdap_VERSION.inH A D20-May-202118 21

libdapclient.pc.inH A D08-Jul-2019387 1714

libdapserver.pc.inH A D08-Jul-2019320 1512

main_page.doxygen.inH A D08-Jul-20192.8 KiB8057

media_types.hH A D08-Jul-20191.9 KiB5721

mime_util.ccH A D01-Dec-202042.5 KiB1,242672

mime_util.hH A D08-Jul-20197.2 KiB18389

parser-util.ccH A D01-Dec-202018.8 KiB702460

parser-util.hH A D01-Dec-20203.1 KiB10226

parser.hH A D08-Jul-20193.9 KiB14262

util.ccH A D12-Aug-202134.8 KiB1,234725

util.hH A D12-Aug-20215.3 KiB15856

util_mit.ccH A D08-Jul-201910.5 KiB370263

util_mit.hH A D08-Jul-20191.2 KiB377

xdr-datatypes-config.h.inH A D08-Jul-2019493 3122

xdr-datatypes-static.hH A D08-Jul-20191.2 KiB5730

xdr-datatypes.hH A D23-Mar-2021659 3218

xdrutil_ppc.cH A D08-Jul-20191.1 KiB4224

README.dodsrc

1$Id$
2
3Current for version 3.7.6 (12 March 2007)
4
5The libdap client-side configuration file (.dodsrc) is used to configure how
6clients cache responses and how they interact with proxy servers. By default
7the configuration file resides in a users home directory and is called
8`.dodsrc'. This can be changed by creating the environment variable
9DODS_CONF and setting it to the full pathname of the configuration file.
10
11About the Win32 builds:
12
13For Win32 (Windows XP and Vista) a client linked with libdapclient will look
14for the .dodsrc file in the following locations: C:\Dods; %APPDATA%; %TEMP%;
15and %TMP%. If no .dodsrc file is found, the library will create one in
16%APPDATA%. Note that on some Windows XP machines a user's 'Application Data'
17directory is hidden. To see and edit the .dodsrc file, open a file browser
18window from the Start menu, go to your home directory and then type in
19'Application Data'. The .dodsrc file will be created by the first OPeNDAP
20client to run if there's not a copy already there.
21
22Another note about the Win32 builds and the .dodsrc file: It appears that
23client-side caching does not work in recent versions of the library, so until
24further notice, leave USE_CACHE set to zero.
25
26New feature added with libdap version 3.7.3 (7 Nov 2006)
27
28The configuration file can now be used to control client-side behavior when
29accessing servers using SSL. By default, certificates must be signed by a
30certificate authority. The libcurl package recognizes a large set of
31CAs; you can sign your own certificates as well (but see the OpenSSL
32documentation for more information). In addition, server hosts must identify
33themselves using the same name as is used in the certificate.
34
35To disable these features, set the configuration parameter VALIDATE_SSL to
36zero. By default, these features are now enabled following the defaults for
37libcurl.
38
39If a DODS client starts and cannot find the configuration file, then one with
40default parameters will be created in the user's home directory. By default
41caching will be enabled with a maximum cache size of 20M and a default
42expiration time of 24 hours. By default no proxy server is configured and SSL
43hosts and certificates are validated. Also by default, compression is not
44activated.
45
46A sample configuration file looks like (the line numbers are not part of the
47file; they've been added to make the description clearer):
48
490   # Comments start with a `#' in the first column.
501	USE_CACHE=1
512	MAX_CACHE_SIZE=20
523	MAX_CACHED_OBJ=5
534	IGNORE_EXPIRES=0
545	CACHE_ROOT=/home/jimg/.dods_cache/
556	DEFAULT_EXPIRES=86400
567	DEFLATE=0
578	VALIDATE_SSL=1
589	PROXY_SERVER=http,http://jimg:password@dcz.dods.org/
5910	NO_PROXY_FOR=http,dcz.dods.org
6011	AIS_DATABASE=.ais_sst_database
61
62COMMENTS
63Starting a line with a `#' makes that line a comment.
64
65CACHING
66
67The parameters on lines 1 through 6 determine how the DAP++ library will use
68its HTTP 1.1 cache. If the value of USE_CACHE is 1, the cache is active. A
69value of 0 turns off the cache. Make sure you use zero (0) and not the letter
70`O'.
71
72The value of MAX_CACHE_SIZE sets the maximum size of the cache in megabytes.
73Once the cache reaches this size, caching more objects will cause cache
74garbage collection. The algorithm used is to first purge the cache of any
75stale entries and then remove remaining entries starting with those that have
76the lowest hit count. Garbage collection stops when 90% of the cache has been
77purged.
78
79The value of MAX_CACHED_OBJ sets the maximum size of any individual object in
80the cache in megabytes. Objects received from a server larger than this value
81will not be cached even if there's room for them without purging other
82objects.
83
84The parameter CACHE_ROOT contains the pathname to the cache's top directory.
85If two or more users want to share a cache, then they must both have read and
86write permissions to the cache root.
87
88If the value of IGNORE_EXPIRES is 1, then Expires: headers in response
89documents will be ignored. The value of DEFAULT_EXPIRES sets the expiration
90time for any response that does not include either an Expires or
91Last-Modified header. The value is given in seconds; 86,400 is 24 hours. In
92general you should *not* ignore the Expires header; the server probably had a
93good reason to send it along with the response. This parameter is here for
94unusual situations.
95
96Note: If a Last-Modified header is returned with the response, and there's
97*no* Expires header, the expiration time is is 10% of the difference between
98the current time and the LM time or 48 hours, whichever is smaller. Note that
99libdap ignores the DEFAULT_EXPIRES time in this case. Any request made before
100the expiration time will use the cached response without validation. Any
101request made after the expiration time will use a conditional GET. Servers
102that have been upgraded to 3.2 or greater will return a 304 response if the
103cached response is still valid or a new response if it is not valid.
104
105If the value of ALWAYS_VALIDATE is 1, then all accesses will be validated with
106the origin server. A value of 0 causes libwww to use the more complex
107expiration and validate algorithm.
108
109CONTROLLING DATA COMPRESSION
110
111If the DEFLATE parameter is set to one (DEFLATE=1) then clients will request
112that servers compress data transmissions. Servers may or may not honor this
113request depending on their abilities.
114
115SSL VALIDATION
116
117Set VALIDATE_SSL to zero to turn off SSL server host and certificate
118validation. By default, SSL hosts and certificates are now validated. If
119you're using your own certificates and don't want to pay to have them signed
120by a CA or to run your own authorization site, use this to defeat SSL
121validation. The old libdap default behavior was to _not_ perform validation
122(because that was the old libcurl default) and we've included this option so
123that you can get that old behavior.
124
125PROXY SERVERS
126
127Note that the parameters PROXY_SERVER and NO_PROXY_FOR may be repeated
128to add multiple proxy servers, suppress proxy access for several hosts, etc.
129
130Lines 9 and 10 contain the parameters used to configure a proxy server.
131The parameter PROXY_SERVER configures a default proxy server. The format is
132
133    PROXY_SERVER=<protocol>,<proxy host url>
134
135The only supported protocols are http, https, and ftp.
136<proxy host url> must be a full URL to the host running the proxy server. If a
137password is used to access the proxy server, include it in the URL using the
138<user:password@host> syntax as shown in the example.
139
140The NO_PROXY parameter provides a simple way to say that access to a certain
141host should never go through a proxy. The syntax of NO_PROXY is:
142
143    NO_PROXY=<protocol>,<hostname>
144
145where <protocol> is as for PROXY_SERVER
146<hostname> is the name of the host, not a url.
147
148The Ancillary Information Service
149
150See README.AIS for more information about the AIS.
151

README.md

1Please find the libdap4 API documentation here: https://opendap.github.io/libdap4/html/
2
3### Updated for version 3.20.8 [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4399722.svg)](https://doi.org/10.5281/zenodo.4399722)
4* Modified Error so that it is more in line with C++11.
5* Added (shallow) unit64_t request size computations and max_request_size state.
6* Changed the internal representation of max response size to uint64_t and confined the overflow
7 to just the (deprecated) functions.
8
9### Updated for version 3.20.7 [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.4399722.svg)](https://doi.org/10.5281/zenodo.4399722)
10* Added code coverage (using gcov) to the CI processes.
11* Dropped support for CentOS-6 (whew!)
12* Improved Int64 support.
13* Corrected byte order issue with DAP4 data transmission.
14* Improved error reporting.
15
16### Updated for version 3.20.6  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3759849.svg)](https://doi.org/10.5281/zenodo.3759849)
17* Stopped CE parse errors from returning user supplied strings in error messages.
18* README is now called README.md
19
20### Updated for version 3.20.5  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3641778.svg)](https://doi.org/10.5281/zenodo.3641778)
21* Memory leaks. Minor bug fixes. Lots of work on CI.
22
23### Updated for version 3.20.4 [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.3267984.svg)](https://doi.org/10.5281/zenodo.3267984)
24* Updated for version 3.20.4
25* Memory leak fixes and C++11 features
26
27### Updated for version 3.20.3 [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2566512.svg)](https://doi.org/10.5281/zenodo.2566512)
28* Fixes and Debian packaging via Travis CI
29
30### Updated for version 3.20.2 [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2002799.svg)](https://doi.org/10.5281/zenodo.2002799)
31* Added libdap::Array::rename_dim()
32
33### Updated for version 3.20.1
34* Added Continuous Delivery for CentOS 6 and 7
35
36### Updated for version 3.20.0
37* We now have a Debian package for libdap.
38* Bug fixes; See the ChangeLog and NEWS files.
39
40### Updated for version 3.19.1
41* Bug fixes; See the ChangeLog and NEWS files.
42
43### Updated for version 3.18.3
44* Bug fixes; See the ChangeLog and NEWS files.
45
46### Updated for version 3.18.2
47* Added support for DAP4 filter operations.
48* For other information, see NEWS and ChangeLog
49
50### Updated for 3.16.0
51
52libdap now supports parallel I/O for certain data write operations,
53mostly those involving larger amounts of data - Marshaller::put_vector
54and put_vector_part. The behavior can be 'turned off' by #undef the
55symbol USE_POSIX_THREADS in the XDSStreamMarshaller classes.
56
57Added to libdap is the ability to send DAP2 responses in parts, so that
58code that builds large responses from multiple reads can write a part
59that is complete and then return to work on the next part. This is
60especially beneficial for aggregations that cross many granules. The new
61method is Marshaller::put_vector_part().
62
63Added to libdap is a virtual void BaseType::clear_local_data() method
64that can be used to free the memory used by a BaseType to hold data values.
65This provides a way for the object to persist in memory without holding
66onto all of its data (which can be a substantial part of the object's
67total size).
68
69Updated for 3.14.0
70
71Bison 3 is required to build this code.
72
73Updated for 3.13.3
74
75Bug fix release
76
77Updated for 3.13.2
78
79Bug fix release
80
81Updated for 3.13.1
82
83A test baseline was updated to use both the DAP2 and DAP4 version of
84the XDAP/X-DAP header. This change was likely over doing things on our
85part, but it's important to have the source releases pass all their
86tests.
87
88Updated 3.13.0
89
90Support for clang: Apple LLVM version 5.1 (clang-503.0.40) (based on
91LLVM 3.4svn) added.
92
93Updated for version 3.12.1
94
95Note that the documented behavior of BaseType::read() is now correctly
96implemented.
97
98Updated for version 3.12.0
99
100The server functions have been moved out of libdap and into their own
101BES module. Currently this modules is part of the BES, but that will change
102in the future. This version of libdap supports building very large arrays
103made up of constant value (e.g., to be used as masks in server functions
104you write).
105
106For information on the way to make these functions, see:
107http://docs.opendap.org/index.php/Expanded_arguments_for_Constraint_Expressions
108Note that this version of libdap requires bison 2.4. This is a change so
109the parsers can use C++ I/O streams and we can eventually drop the FILE*
110interfaces.
111
112Updated for version 3.11.7
113
114Minor tweak for the server function caching code: turn on or off the
115cache by adding or removing the directory /tmp/dap_functions_cache.
116If the directory is not present no caching of server function calls
117is done. All the other behaviors are otherwise identical.
118
119Updated for version 3.11.6
120
121There is a new cache for some kinds of response objects. It's size and
122location are currently fixed to 20GB bytes and
123"/tmp/dap_functions_cache/" but these will be made BES parameters in a
124future release.
125
126Updated for version 3.11.5
127
128A memory leak in XDRStreamMarshaller was fixed.
129
130A bug in DDS::add_var_nocopy() was fixed.
131
132Updated for version 3.11.2
133
134Bug fixes and improvements in the implementations of some methods.
135
136Updated for version 3.11.1
137
138Bug fixes only.
139
140Updated for version 3.11.0
141
142Now constraint expressions can have multiple function calls that return data.
143
144I've bumped up the DAP version from 3.3 to 3.4 to reflect this change.
145
146Updated for Version 3.10.2
147
148BaseType::transfer_attributes() and related methods provide a way for
149handlers to customize how attributes from a DAS object are merged into
150a DDS.
151
152In the past we supported a kind of client-side system that could augment
153the attributes call the 'AIS' (Ancillary Information System). This has
154been removed - our server now supports the NcML language to do much the same
155thing but in a way that can be set on the server once for all users. It's also
156an emerging convention that's gaining wide support within the community.
157
158Updated for Version 3.10.0
159
160DAP 3.3 is now supported; see http://docs.opendap.org/index.php/DAP3/4.
161
162This version of libdap contains many changes that are needed for both
163DAP 4 and the NcML handler. This version of the library is required
164for the Hyrax 1.6 handlers.
165
166The 'deflate' program is no longer part of this library package since
167we are no longer supporting the old data server system (based on WWW's
168CGI specification).
169
170Updated for version 3.9.2
171
172Now libdap supports DAP 3.2. You can read about the evolving DAP 3.x protocol
173at http://docs.opendap.org/index.php/DAP3/4. If your client sends the
174XDAP-Accept header with a value of 3.2 the DDX is different (it includes
175protocol information and also an xmlbase element).
176
177Behavior change for the DAS: In the past the format handlers added double
178quotes to the values of string attributes when they added those values to the
179AttrTable object. This meant that the value of the attribute in the C++
180object was actually not correct since it contained quotes not found in the
181original attribute value. I modified libdap so that if an attribute value in
182the C++ AttrTable object does not have quotes then those quotes are added
183when the value is output in a DAS response (but not a DDX since there's no
184need to quote the value in that response). This ensures that the text in the
185DAS wire representation will parse whether a handler has added quotes or not
186(paving the way for fixed handlers). At the same time I fixed all of our
187handlers so that they no longer add the erroneous quotes. This fixes a
188problem with the DDX where the quotes were showing up as part of the
189attribute value. The change to libdap is such that a broken handler will not
190be any more broken but a fixed handler will work for both DAS and DDX
191generation.
192
193If you have a handler and it's not adding quotes to the String attribute
194values - good, don't change that! If your handler does add quotes, please
195modify it so the DDX will be correct.
196
197Our handler's old, broken, behavior can be resurrected by removing the
198ATTR_STRING_QUOTE FIX define in the appropriate files.
199
200Updated for version 3.8.2 (23 June 2008)
201
202HTTP Cache and win32 installer fixes (the latter are actually in the 3.8.1
203installer for winXP). API change: The functions used to merge ancillary data
204have been moved to their own class (Ancillary).
205
206Updated for version 3.8.1 (10 June 2008)
207
208The syntax for PROXY_SERVER in the .dodsrc file was relaxed. See the .dodsrc
209file for more information.
210
211Updated for Version 3.8.0 (29 February 2008)
212
213The libdap classes and code are now inside of the libdap namespace. In order
214to access any of the classes, for example, you will need to do one of the
215following. After including the libdap headers you can:
216
2171. add a using statement for the entire libdap namespace:
218
219using namespace libdap ;
220
2212. add a using statement for the classes that you will be using:
222
223using libdap::DAS ;
224
2253. inside your code scope the use of libdap classes.
226
227libdap::DAS *das = code_to_get_das() ;
228
229Added method to HTTPCache to return not only the FILE pointer of a cached
230response but also the name of the file in the cache, to allow for this file
231name to be passed to data handlers in the BES to be read.
232
233See NEWS for more information about changes for this version and ChangeLog
234for the gory details.
235
236Updated for Version 3.7.10 (28 November 2007)
237
238A bug fix release. See NEWS.
239
240Updated for Version 3.7.9 (13 November 2007)
241
242This release is a bug fix and refactoring release. Old classes which were no
243longer used have been removed, the FILE* output methods are slated to be
244replaced with ones which will use iostream and will support a chucked
245transfer 'Marshaller,' and the transfer_data() methods have been made a
246formal part of the library, implemented for all classes, fixed and renamed to
247intern_data(). Many bugs in the library were also fixed.
248
249Updated for version 3.7.8 (26 June 2007)
250
251The major fixes in this version are memory errors found and fixed in the
252Regex class and HTTP header processing software. This version also supports
253pkg-config on hosts that have that installed.
254
255See NEWS for more information about changes for this version and ChangeLog
256for the gory details.
257
258Notes for version 3.7.7 (2 May 2007)
259
260The major fix here is to the source build. We've fixed the issue where source
261builds failed to make the dapserver and dapclient libraries.
262
263Notes for version 3.7.6 (12 March 2007)
264
265Two bug fixes, both minor. Problems in the linear_scale() constraint
266expression function and a bad/missing #include in GNURegex.h were fixed.
267
268There was an error in the INSTALL file sent out in the previous release. It
269said this library implemented DAP version 3.2, but in fact it implements
270version 3.1. The version 3.2 release will be along soon (RSN).
271
272Notes for version 3.7.5 (7 Feb 2007)
273
274This version includes many fixes from the first Server4 beta release
275plus fixes for the server-side functions. It also includes a smoother
276Win32 build.
277
278Notes for version 3.7.4 (2 Jan 2007)
279
280Release for the Server4 beta release.
281
282Notes for version 3.7.3 (24 Nov 2006)
283
284This version of libdap contains a beta release of the server-side functions
285geogrid(), geoarray(), linear_scale() and version(). These can be used to
286select parts of Grids and Arrays using latitude and longitude values instead
287of array position indexes. The linear_scale() function can be used to scale
288variables (including those return by other function) using 'y = mx + b'. The
289version() function can be used to find out which versions of the functions are
290installed.
291
292EXAMPLES
293
294To get version information use the 'version()' function. Currently, version()
295can only be called when asking for data, and you must give the name of a data
296source, although in the default version of version() the data source is not
297used. The version function takes one optional argument which may be the strings
298'help' or 'xml'. Use 'help' to get help on using the function; use 'xml' to get
299version information encoded using XML instead of plain text:
300
301<code>
302[jimg@zoe libdap]$ url=http://test.opendap.org/dap/data/nc/coads_climatology.nc
303[jimg@zoe libdap]$ ./getdap -D "$url?version()"
304The data:
305String version = "Function set: version 1.0, grid 1.0, geogrid 1.0b2,
306		          geoarray 0.9b1, linear_scale 1.0b1";
307
308[jimg@zoe libdap]$ ./getdap -D "$url?version(help)"
309The data:
310String version = "Usage: version() returns plain text information about ...
311
312[jimg@zoe libdap]$ ./getdap -D "$url?version(xml)"
313The data:
314String version = "<?xml version=\"1.0\"?>
315    <functions>
316        <function name=\"version\" version=\"1.0\"/>
317        <function name=\"grid\" version=\"1.0\"/>
318        <function name=\"geogrid\" version=\"1.0\"/>
319        <function name=\"geoarray\" version=\"1.0\"/>
320        <function name=\"linear_scale\" version=\"1.0\"/>
321    </functions>";
322
323The geogrid function can only be used with variables that are Grids:
324
325[jimg@zoe libdap]$ getdap -d "$url"
326Dataset {
327    Float64 COADSX[COADSX = 180];
328    Float64 COADSY[COADSY = 90];
329    Float64 TIME[TIME = 12];
330    Grid {
331      Array:
332        Float32 SST[TIME = 12][COADSY = 90][COADSX = 180];
333      Maps:
334        Float64 TIME[TIME = 12];
335        Float64 COADSY[COADSY = 90];
336        Float64 COADSX[COADSX = 180];
337    } SST;
338    Grid {
339    .
340    .
341    .
342</code>
343
344Pass the name of the Grid variable and the upper-left and lower-right corners
345of the lat/lon rectangle to geogrid. Optionally, pass one or more relational
346expressions to select parts of dimensions that are not lat/lon.
347
348Note: in libdap 3.7.3 calling geogrid with a constraint on each dimension
349may return incorrect values that indicate missing data even though data should
350have been returned.
351
352<code>
353[jimg@zoe libdap]$ getdap -D "$url?geogrid(SST,30,-60,20,-60,\"TIME=366\")"
354The data:
355Grid {
356  Array:
357    Float32 SST[TIME = 1][COADSY = 7][COADSX = 2];
358  Maps:
359    Float64 TIME[TIME = 1];
360    Float64 COADSY[COADSY = 7];
361    Float64 COADSX[COADSX = 2];
362} SST = {  Array: {{{24.4364, 25.0923},{23.7465, 24.4146},{19.843, 23.6033},
363{16.8464, 17.7756},{16.65, 16.818},{-1e+34, 15.3656},{18.7214, 13.1286}}}
364Maps: {366}, {19, 21, 23, 25, 27, 29, 31}, {-61, -59} };
365</code>
366
367The geoarray() function works like geogrid() except that it's used to select
368from an Array variable and not a Grid. In addition to the four lat/lon values
369for selection rectangle, the caller must supply the data's corner points. A
370subsequent release of libdap will include a version that reads the data extent
371from the data source when possible so caller's won't normally have to know the
372data's extent ahead of time.
373
374The linear_scale() function take either one or three arguments. The first
375(only) argument is the name of a variable or the return from another
376function. This variable will be scaled using the 'y = mx + b' equation where
377'x' is the value(s) of the input variable and 'm' and 'b' are read from the
378data source using the values of attributes name 'scale_factor' and
379'add_offset.' If these are not present, or to over ride their values, m and b
380can be supplied using the second and third arguments.
381
382Note that there are still some problems with linear_scale() in this release.
383
384See NEWS and ChangeLog for information about other changes
385
386Notes for version 3.7.2
387
388This version of libdap is required for the 9/15/06 alpha release of Server4.
389The library now contains software which enables Server4 to build the ASCII
390data response for all types of variables, including Sequence and nested
391Sequence variables. These features are additions to the API, so older code
392will work just fine with the new library. See NEWS for more specific info
393about bug fixes.
394
395Notes for version 3.7.1
396
397This is a bug fix release (mostly) made for users of the netcdf client
398library who need a fix for a problem dealing with attributes from the HDF4
399server.
400
401NOTES for version 3.7.0
402
403This version includes new features and an implementation change.
404
405This version of libdap now returns the DAP protocol version number, 3.1, in
406an HTTP response header. Use this to determine which protocol version the
407library implements. The inclusion of a protocol version number is the sole
408official new feature of DAP 3.1. Use Connect::get_protocol() to get the
409version number. Clients can use this to determine the features supported by a
410server. The Connect::get_version() method can still be used to get our
411server's implementation version. The distinction is that as more groups
412provide their own implementations of the DAP, the protocol version will
413provide a way for clients to determine capabilities independently of
414implementation.
415
416The libdap library now contains an implementation of the DDX object/response,
417although this is an alpha implementation and it's actually been part of the
418library for some time now. The implementation contained in this version of
419the library is close enough to the version we intend for DAP4 that developers
420can start to use it. Most of the server handlers will return DDXs when asked.
421
422The DDX combines the information previously held by the DDS and DAS objects,
423making it much easier to associate attributes to variables. As the name
424suggests, the DDX uses XML rather than curly-braces. You can drop the DDX
425into your favorite XML parser and get a DOM tree; no need to use our parsers.
426However, libdap contains a nice SAX parser that will build the libdap objects
427directly from the XML DDX object/response. Also included in libdap are
428methods to build a DDX using a DDS and DAS, so there's an easy migration path
429for both servers and clients.
430
431Finally, the library contains two structural changes. First, the library
432named 'libdap' now holds the DAP implementation while two new libraries,
433'libdapclient' and 'libdapserver', now hold the client and server helper
434classes which are not strictly part of the DAP. Secondly, the DDS/DDX object
435now takes the constraint evaluator as a parameter. The class
436ConstraintEvaluator holds our default evaluator, but it's now possible to use
437your own evaluator .
438
439NOTES for version 3.6.1
440
441Version 3.6.1 is bug fix release.
442
443NOTES for version 3.6.0
444
445This version of the library may not work older source code. Many of the
446deprecated methods have been removed.
447
448Added are headers which send information about the version of the DAP protocol
449that the library implements (in contrast to the implementation of the library
450itself). A new header named XOPeNDAP-Server is used to send information about
451the implementation of servers.
452
453The libtool interface version has been incremented from 3 to 4 (these versions
454do no track the software's release version since several releases might
455present compatible binary interfaces).
456
457NOTES for version 3.5.3
458
459This version of libdap++ cannot be used to build the 3.4.x and previous
460clients and/or servers. However, client and servers built using this code
461_will_ work with the older clients and servers.
462
463WHAT'S IN THIS DIRECTORY?
464
465This directory contains the OPeNDAP C++ implementation of the Data
466Access Protocol version 2 (DAP2) with some extensions that will be
467part of DAP3.  Documentation for this software can be found on the
468OPeNDAP home page at http://www.opendap.org/. The NASA/ESE RFC which
469describes DAP2, implemented by the library, can be found at
470http://spg.gsfc.nasa.gov/rfc/004/.
471
472The DAP2 is used to provide a uniform way of accessing a variety of
473different types of data across the Internet. It was originally part of
474the DODS and then NVODS projects. The focus of those projects was
475access to Earth-Science data, so much of the software developed using
476the DAP2 to date has centered on that discipline. However, the DAP2
477data model is very general (and similar to a modern structured
478programming language) so it can be applied to a wide variety of
479fields.
480
481The DAP2 is implemented as a set of C++ classes that can be used to
482build data servers and clients. The classes may be specialized to
483mimic the behavior of other data access APIs, such as netCDF. In this
484way, programs originally meant to work with local data in those
485formats can be re-linked and equipped to work with data stored
486remotely in many different formats.  The classes can also by
487specialized to build standalone client programs.
488
489The DAP2 is contained in a single library: libdap++.a. Also included
490in the library are classes and utility functions which simplify
491building clients and servers.
492
493WHAT ELSE IS THERE?
494
495The file README.dodsrc describes the client-side behavior which can be
496controlled using the .dodsrc file. This includes client-side caching,
497proxy servers, et c., and is described in a separate file so it's easy
498to include in your clients.
499
500The file README.AIS describes the prototype Ancillary Information
501Service (AIS) included in this version of the library. The AIS is
502(currently) a client-side capability which provides a way to augment
503DAP attributes. This is a very useful feature because it can be used
504to add missing metadata to a data source. The AIS is accessed by using
505the AISConnect class in place of Connect in your client.
506
507This directory also contains test programs for the DAP2, a sample
508specialization of the classes, getdap (a useful command-line web
509client created with DAP2) and dap-config (a utility script to simplify
510linking with libdap.a). Also included as of version 3.5.2 is
511libdap.m4, an autoconf macro which developers can use along with
512autoconf to test for libdap. This macro will be installed in
513${prefix}/share/aclocal and can be by any package which uses autoconf
514for its builds. See the file for more information.
515
516We also have Java and C versions of the DAP2 library which
517inter-operate with software which uses this library. In other words,
518client programs built with the Java DAP2 implementation can
519communicate with servers built with this (C++) implementation of the
520DAP2. The C DAP2 library, called the Ocapi, only implements the
521client-side part of the protocol. Clients written using the Ocapi are
522interoperable with both the Java and C++ DAP2 libraries. Note that the
523Ocapi is in early beta and available only from CVS at this time (5 May
5242005).
525
526THREAD SAFETY
527
528We don't need to do this since the STL is also not thread safe. Users
529of libdap have to be sure that multiple threads never make
530simultaneous and/or overlapping calls to a single copy of libdap. If
531several threads are part of a program and each will make calls to
532libdap, either those threads must synchronize their calls or arrange
533to each use their own copy of libdap.  Some aspects of the library
534are thread-safe: the singleton classes are all protected as is the
535HTTP cache (which uses the local file system).
536
537INSTALLATION INSTRUCTIONS
538
539See the file INSTALL in this directory for information on building the
540library and the geturl client.
541
542COPYRIGHT INFORMATION
543
544The OPeNDAP DAP library is copyrighted using the GNU Lesser GPL. See
545the file COPYING or contact the Free Software Foundation, Inc., at 59
546Temple Place, Suite 330, Boston, MA 02111-1307 USA. Older versions of
547the DAP were copyrighted by the University of Rhode Island and
548Massachusetts Institute of Technology; see the file COPYRIGHT_URI. The
549file deflate.c is also covered by COPYRIGHT_W3C.
550
551
552