libdap  Updated for version 3.20.6
libdap4 is an implementation of OPeNDAP's DAP protocol.
libdap::D4StreamUnMarshaller Class Reference

Read data from the stream made by D4StreamMarshaller. More...

#include <D4StreamUnMarshaller.h>

Inheritance diagram for libdap::D4StreamUnMarshaller:
Inheritance graph

Public Member Functions

 D4StreamUnMarshaller (istream &in, bool twiddle_bytes)
 Build a DAP4 Stream unMarshaller. More...
 
 D4StreamUnMarshaller (istream &in)
 
virtual void dump (ostream &strm) const
 dump the contents of this object to the specified ostream More...
 
virtual void get_byte (dods_byte &val)
 
Crc32::checksum get_checksum ()
 
string get_checksum_str ()
 
int64_t get_count ()
 
virtual void get_float32 (dods_float32 &val)
 
virtual void get_float64 (dods_float64 &val)
 
virtual void get_int (int &)
 
virtual void get_int16 (dods_int16 &val)
 
virtual void get_int32 (dods_int32 &val)
 
virtual void get_int64 (dods_int64 &val)
 
virtual void get_int8 (dods_int8 &val)
 
virtual void get_opaque (char *, unsigned int)
 
virtual void get_opaque_dap4 (char **val, int64_t &len)
 
virtual void get_opaque_dap4 (vector< uint8_t > &val)
 
virtual void get_str (string &val)
 
virtual void get_uint16 (dods_uint16 &val)
 
virtual void get_uint32 (dods_uint32 &val)
 
virtual void get_uint64 (dods_uint64 &val)
 
virtual void get_url (string &val)
 
virtual void get_vector (char **, unsigned int &, Vector &)
 
virtual void get_vector (char **, unsigned int &, int, Vector &)
 
virtual void get_vector (char *val, int64_t num_bytes)
 
virtual void get_vector (char *val, int64_t num_elem, int elem_size)
 
virtual void get_vector_float32 (char *val, int64_t num_elem)
 
virtual void get_vector_float64 (char *val, int64_t num_elem)
 
bool is_source_big_endian () const
 Is the data source we are reading from a big-endian machine? We need this because the value of the CRC32 checksum is dependent on byte order. More...
 
void set_twiddle_bytes (bool twiddle)
 

Static Public Attributes

static const unsigned int c_checksum_length = 4
 

Detailed Description

Read data from the stream made by D4StreamMarshaller.

Definition at line 65 of file D4StreamUnMarshaller.h.

Constructor & Destructor Documentation

◆ D4StreamUnMarshaller() [1/2]

libdap::D4StreamUnMarshaller::D4StreamUnMarshaller ( istream &  in,
bool  twiddle_bytes 
)

Build a DAP4 Stream unMarshaller.

Build a DAP4 Stream UnMarshaller initialed to read from am istream object. Figure out if the words read for values need to be 'twiddled' based on the byte-order of the stream an this host (see set_twiddle_bytes()).

Parameters
inRead from this input stream
is_stream_bigendianThe byte order of the data in the stream

Definition at line 59 of file D4StreamUnMarshaller.cc.

◆ D4StreamUnMarshaller() [2/2]

libdap::D4StreamUnMarshaller::D4StreamUnMarshaller ( istream &  in)

When using this constructor, set_twiddle_bytes() should be called before data are processed.

Parameters
in

Definition at line 80 of file D4StreamUnMarshaller.cc.

Member Function Documentation

◆ dump()

void libdap::D4StreamUnMarshaller::dump ( ostream &  strm) const
virtual

dump the contents of this object to the specified ostream

This method is implemented by all derived classes to dump their contents, in other words, any state they might have, private variables, etc...

Parameters
strmC++ i/o stream to dump the object to

Implements libdap::UnMarshaller.

Definition at line 468 of file D4StreamUnMarshaller.cc.

◆ get_count()

int64_t libdap::D4StreamUnMarshaller::get_count ( )

Read a count value from the stream. This is used with D4Sequence which needs to use various other 'get' methods to read its fields. Methods like get_opaque_dap4() handle reading their count values themselves.

Parameters
countThe number of elements to follow.

Definition at line 264 of file D4StreamUnMarshaller.cc.

◆ get_opaque_dap4()

void libdap::D4StreamUnMarshaller::get_opaque_dap4 ( char **  val,
int64_t &  len 
)
virtual

Get opaque data when the size of the data to be read is not known in advance.

Parameters
valValue-result parameter for the data; caller must delete.
lenvalue-result parameter for the length of the data

Definition at line 279 of file D4StreamUnMarshaller.cc.

◆ is_source_big_endian()

bool libdap::D4StreamUnMarshaller::is_source_big_endian ( ) const
inline

Is the data source we are reading from a big-endian machine? We need this because the value of the CRC32 checksum is dependent on byte order.

Note
This is somewhat tortured logic, but if this host is big-endian and twiddle_bytes is not true, then the remote host must be big-endian. Similarly, if this host is not big-endian and twiddle_bytes is true, then the remote host must be big-endian

Definition at line 104 of file D4StreamUnMarshaller.h.


The documentation for this class was generated from the following files: