libdap Updated for version 3.21.1
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
Collaboration diagram for libdap::D4StreamUnMarshaller:
Collaboration graph

Public Member Functions

 D4StreamUnMarshaller (istream &in)
 
 D4StreamUnMarshaller (istream &in, bool twiddle_bytes)
 Build a DAP4 Stream unMarshaller.
 
virtual void dump (ostream &strm) const
 dump the contents of this object to the specified ostream
 
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 &, int, Vector &)
 
virtual void get_vector (char **, unsigned 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.
 
void set_twiddle_bytes (bool twiddle)
 
virtual ~D4StreamUnMarshaller ()
 

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 78 of file D4StreamUnMarshaller.cc.

◆ ~D4StreamUnMarshaller()

libdap::D4StreamUnMarshaller::~D4StreamUnMarshaller ( )
virtual

Definition at line 91 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 408 of file D4StreamUnMarshaller.cc.

◆ get_byte()

void libdap::D4StreamUnMarshaller::get_byte ( dods_byte & val)
virtual

Implements libdap::UnMarshaller.

Definition at line 112 of file D4StreamUnMarshaller.cc.

◆ get_checksum()

Crc32::checksum libdap::D4StreamUnMarshaller::get_checksum ( )

Definition at line 97 of file D4StreamUnMarshaller.cc.

◆ get_checksum_str()

string libdap::D4StreamUnMarshaller::get_checksum_str ( )

Definition at line 104 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 225 of file D4StreamUnMarshaller.cc.

◆ get_float32()

void libdap::D4StreamUnMarshaller::get_float32 ( dods_float32 & val)
virtual

Implements libdap::UnMarshaller.

Definition at line 134 of file D4StreamUnMarshaller.cc.

◆ get_float64()

void libdap::D4StreamUnMarshaller::get_float64 ( dods_float64 & val)
virtual

Implements libdap::UnMarshaller.

Definition at line 162 of file D4StreamUnMarshaller.cc.

◆ get_int()

virtual void libdap::D4StreamUnMarshaller::get_int ( int & )
inlinevirtual

Implements libdap::UnMarshaller.

Definition at line 138 of file D4StreamUnMarshaller.h.

◆ get_int16()

void libdap::D4StreamUnMarshaller::get_int16 ( dods_int16 & val)
virtual

Implements libdap::UnMarshaller.

Definition at line 116 of file D4StreamUnMarshaller.cc.

◆ get_int32()

void libdap::D4StreamUnMarshaller::get_int32 ( dods_int32 & val)
virtual

Implements libdap::UnMarshaller.

Definition at line 122 of file D4StreamUnMarshaller.cc.

◆ get_int64()

void libdap::D4StreamUnMarshaller::get_int64 ( dods_int64 & val)
virtual

Definition at line 128 of file D4StreamUnMarshaller.cc.

◆ get_int8()

void libdap::D4StreamUnMarshaller::get_int8 ( dods_int8 & val)
virtual

Definition at line 114 of file D4StreamUnMarshaller.cc.

◆ get_opaque()

virtual void libdap::D4StreamUnMarshaller::get_opaque ( char * ,
unsigned int  )
inlinevirtual

Implements libdap::UnMarshaller.

Definition at line 131 of file D4StreamUnMarshaller.h.

◆ get_opaque_dap4() [1/2]

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 238 of file D4StreamUnMarshaller.cc.

◆ get_opaque_dap4() [2/2]

void libdap::D4StreamUnMarshaller::get_opaque_dap4 ( vector< uint8_t > & val)
virtual

Definition at line 246 of file D4StreamUnMarshaller.cc.

◆ get_str()

void libdap::D4StreamUnMarshaller::get_str ( string & val)
virtual

Implements libdap::UnMarshaller.

Definition at line 207 of file D4StreamUnMarshaller.cc.

◆ get_uint16()

void libdap::D4StreamUnMarshaller::get_uint16 ( dods_uint16 & val)
virtual

Implements libdap::UnMarshaller.

Definition at line 189 of file D4StreamUnMarshaller.cc.

◆ get_uint32()

void libdap::D4StreamUnMarshaller::get_uint32 ( dods_uint32 & val)
virtual

Implements libdap::UnMarshaller.

Definition at line 195 of file D4StreamUnMarshaller.cc.

◆ get_uint64()

void libdap::D4StreamUnMarshaller::get_uint64 ( dods_uint64 & val)
virtual

Definition at line 201 of file D4StreamUnMarshaller.cc.

◆ get_url()

void libdap::D4StreamUnMarshaller::get_url ( string & val)
virtual

Implements libdap::UnMarshaller.

Definition at line 215 of file D4StreamUnMarshaller.cc.

◆ get_vector() [1/4]

virtual void libdap::D4StreamUnMarshaller::get_vector ( char ** ,
unsigned int & ,
int ,
Vector &  )
inlinevirtual

Implements libdap::UnMarshaller.

Definition at line 148 of file D4StreamUnMarshaller.h.

◆ get_vector() [2/4]

virtual void libdap::D4StreamUnMarshaller::get_vector ( char ** ,
unsigned int & ,
Vector &  )
inlinevirtual

Implements libdap::UnMarshaller.

Definition at line 144 of file D4StreamUnMarshaller.h.

◆ get_vector() [3/4]

void libdap::D4StreamUnMarshaller::get_vector ( char * val,
int64_t num_bytes )
virtual

Definition at line 255 of file D4StreamUnMarshaller.cc.

◆ get_vector() [4/4]

void libdap::D4StreamUnMarshaller::get_vector ( char * val,
int64_t num_elem,
int elem_size )
virtual

Definition at line 314 of file D4StreamUnMarshaller.cc.

◆ get_vector_float32()

void libdap::D4StreamUnMarshaller::get_vector_float32 ( char * val,
int64_t num_elem )
virtual

Definition at line 352 of file D4StreamUnMarshaller.cc.

◆ get_vector_float64()

void libdap::D4StreamUnMarshaller::get_vector_float64 ( char * val,
int64_t num_elem )
virtual

Definition at line 380 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.

◆ set_twiddle_bytes()

void libdap::D4StreamUnMarshaller::set_twiddle_bytes ( bool twiddle)
inline

Definition at line 92 of file D4StreamUnMarshaller.h.

Member Data Documentation

◆ c_checksum_length

const unsigned int libdap::D4StreamUnMarshaller::c_checksum_length = 4
static

Definition at line 67 of file D4StreamUnMarshaller.h.


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