Apache Geode Native C++ Reference 1.15.0
apache::geode::client::PdxReader Class Referenceabstract

A PdxReader will be passed to PdxSerializable.fromData or during deserialization of a PDX. More...

#include <PdxReader.hpp>

Public Member Functions

virtual bool hasField (const std::string &fieldName)=0
 Checks if the named field exists and returns the result. More...
 
virtual bool isIdentityField (const std::string &fieldName)=0
 Checks if the named field was PdxWriter#markIdentityFieldmarked as an identity field. More...
 
 PdxReader ()
 constructors More...
 
virtual int8_t ** readArrayOfByteArrays (const std::string &fieldName, int32_t &arrayLength, int32_t **elementLength)=0
 Read a int8_t** value from the PdxReader and sets ArrayOfByteArray's length and individual ByteArray's length. More...
 
virtual bool readBoolean (const std::string &fieldName)=0
 Read a bool value from the PdxReader. More...
 
virtual std::vector< bool > readBooleanArray (const std::string &fieldName)=0
 Read a bool* value from the PdxReader and sets array length. More...
 
virtual int8_t readByte (const std::string &fieldName)=0
 Read a int8_t value from the PdxReader. More...
 
virtual std::vector< int8_t > readByteArray (const std::string &fieldName)=0
 Read a int8_t* value from the PdxReader and sets array length. More...
 
virtual char16_t readChar (const std::string &fieldName)=0
 Read a wide char value from the PdxReader. More...
 
virtual std::vector< char16_t > readCharArray (const std::string &fieldName)=0
 Read a char16_t* value from the PdxReader and sets array length. More...
 
virtual std::shared_ptr< CacheableDatereadDate (const std::string &fieldName)=0
 Read a std::shared_ptr<CacheableDate> value from the PdxReader. More...
 
virtual double readDouble (const std::string &fieldName)=0
 Read a double value from the PdxReader. More...
 
virtual std::vector< double > readDoubleArray (const std::string &fieldName)=0
 Read a double* value from the PdxReader and sets array length. More...
 
virtual float readFloat (const std::string &fieldName)=0
 Read a float value from the PdxReader. More...
 
virtual std::vector< float > readFloatArray (const std::string &fieldName)=0
 Read a float* value from the PdxReader and sets array length. More...
 
virtual int32_t readInt (const std::string &fieldName)=0
 Read a int32_t value from the PdxReader. More...
 
virtual std::vector< int32_t > readIntArray (const std::string &fieldName)=0
 Read a int32_t* value from the PdxReader and sets array length. More...
 
virtual int64_t readLong (const std::string &fieldName)=0
 Read a int64_t value from the PdxReader. More...
 
virtual std::vector< int64_t > readLongArray (const std::string &fieldName)=0
 Read a int64_t* value from the PdxReader and sets array length. More...
 
virtual std::shared_ptr< CacheablereadObject (const std::string &fieldName)=0
 Read a std::shared_ptr<Cacheable> value from the PdxReader. More...
 
virtual std::shared_ptr< CacheableObjectArrayreadObjectArray (const std::string &fieldName)=0
 Read a std::shared_ptr<CacheableObjectArray> value from the PdxReader. More...
 
virtual int16_t readShort (const std::string &fieldName)=0
 Read a int16_t value from the PdxReader. More...
 
virtual std::vector< int16_t > readShortArray (const std::string &fieldName)=0
 Read a int16_t* value from the PdxReader and sets array length. More...
 
virtual std::string readString (const std::string &fieldName)=0
 Read a std::string value from the PdxReader. More...
 
virtual std::vector< std::string > readStringArray (const std::string &fieldName)=0
 Read a array of strings from the PdxReader. More...
 
virtual std::shared_ptr< PdxUnreadFieldsreadUnreadFields ()=0
 This method returns an object that represents all the unread fields which must be passed to PdxWriter#writeUnreadFields in the toData code. More...
 
virtual ~PdxReader ()
 destructor More...
 

Detailed Description

A PdxReader will be passed to PdxSerializable.fromData or during deserialization of a PDX.

The domain class needs to deserialize field members using this abstract class. This class is implemented by Native Client. Each readXXX call will return the field's value. If the serialized PDX does not contain the named field then a default value will be returned. Standard Java defaults are used. For Objects this is null and for primitives it is 0 or 0.0.

Note
Implementations of PdxReader that are internal to the Native Client library may be returned to clients via instances of PdxReader&. For those implementations, any non-nullptr, non-empty strings returned from PdxReader::readString() or PdxReader::readWideString() must be freed with DataInput::freeUTFMemory(). Arrays returned from PdxReader::readStringArray() or PdxReader::readWideStringArray() must be freed with GF_SAFE_DELETE_ARRAY once their constituent strings have been freed with DataInput::freeUTFMemory().
Custom implementations of PdxReader are not subject to this restriction.

Constructor & Destructor Documentation

◆ PdxReader()

apache::geode::client::PdxReader::PdxReader ( )
inline

constructors

◆ ~PdxReader()

virtual apache::geode::client::PdxReader::~PdxReader ( )
inlinevirtual

destructor

Member Function Documentation

◆ hasField()

virtual bool apache::geode::client::PdxReader::hasField ( const std::string &  fieldName)
pure virtual

Checks if the named field exists and returns the result.

This can be useful when writing code that handles more than one version of a PDX class.

Parameters
fieldNamethe name of the field to check
Returns
true if the named field exists; otherwise false

◆ isIdentityField()

virtual bool apache::geode::client::PdxReader::isIdentityField ( const std::string &  fieldName)
pure virtual

Checks if the named field was PdxWriter#markIdentityFieldmarked as an identity field.

Note that if no fields have been marked then all the fields are used as identity fields even though this method will return false since none of them have been marked.

Parameters
fieldnamethe name of the field to check
Returns
true if the named field exists and was marked as an identify field; otherwise false

◆ readArrayOfByteArrays()

virtual int8_t ** apache::geode::client::PdxReader::readArrayOfByteArrays ( const std::string &  fieldName,
int32_t &  arrayLength,
int32_t **  elementLength 
)
pure virtual

Read a int8_t** value from the PdxReader and sets ArrayOfByteArray's length and individual ByteArray's length.

C++ int8_t** is mapped to Java byte[][].

Parameters
fieldNamename of the field to read
arrayLengthlength is set with number of int8_t* elements
elementLengthelementLength is set with the length value of individual byte arrays.
Returns
value of type int8_t**.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readBoolean()

virtual bool apache::geode::client::PdxReader::readBoolean ( const std::string &  fieldName)
pure virtual

Read a bool value from the PdxReader.

C++ bool is mapped to Java boolean

Parameters
fieldNamename of the field to read
Returns
value of type bool.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readBooleanArray()

virtual std::vector< bool > apache::geode::client::PdxReader::readBooleanArray ( const std::string &  fieldName)
pure virtual

Read a bool* value from the PdxReader and sets array length.

C++ bool* is mapped to Java boolean[]

Parameters
fieldNamename of the field to read
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readByte()

virtual int8_t apache::geode::client::PdxReader::readByte ( const std::string &  fieldName)
pure virtual

Read a int8_t value from the PdxReader.

C++ int8_t is mapped to Java byte

Parameters
fieldNamename of the field to read
Returns
value of type int8_t.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readByteArray()

virtual std::vector< int8_t > apache::geode::client::PdxReader::readByteArray ( const std::string &  fieldName)
pure virtual

Read a int8_t* value from the PdxReader and sets array length.

C++ int8_t* is mapped to Java byte[].

Parameters
fieldNamename of the field to read
Returns
value of type int8_t*.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readChar()

virtual char16_t apache::geode::client::PdxReader::readChar ( const std::string &  fieldName)
pure virtual

Read a wide char value from the PdxReader.

C++ char16_t is mapped to Java char

Parameters
fieldNamename of the field to read.
Returns
value of type wchar_t.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readCharArray()

virtual std::vector< char16_t > apache::geode::client::PdxReader::readCharArray ( const std::string &  fieldName)
pure virtual

Read a char16_t* value from the PdxReader and sets array length.

C++ char16_t* is mapped to Java char[].

Parameters
fieldNamename of the field to read
Returns
value of type char16_t*.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readDate()

virtual std::shared_ptr< CacheableDate > apache::geode::client::PdxReader::readDate ( const std::string &  fieldName)
pure virtual

Read a std::shared_ptr<CacheableDate> value from the PdxReader.

C++ std::shared_ptr<CacheableDate> is mapped to Java Date

Parameters
fieldNamename of the field to read
Returns
value of type std::shared_ptr<CacheableDate>.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readDouble()

virtual double apache::geode::client::PdxReader::readDouble ( const std::string &  fieldName)
pure virtual

Read a double value from the PdxReader.

C++ double is mapped to Java double

Parameters
fieldNamename of the field to read
Returns
value of type double.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readDoubleArray()

virtual std::vector< double > apache::geode::client::PdxReader::readDoubleArray ( const std::string &  fieldName)
pure virtual

Read a double* value from the PdxReader and sets array length.

C++ double* is mapped to Java double[].

Parameters
fieldNamename of the field to read
Returns
value of type double*.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readFloat()

virtual float apache::geode::client::PdxReader::readFloat ( const std::string &  fieldName)
pure virtual

Read a float value from the PdxReader.

C++ float is mapped to Java float

Parameters
fieldNamename of the field to read
Returns
value of type float.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readFloatArray()

virtual std::vector< float > apache::geode::client::PdxReader::readFloatArray ( const std::string &  fieldName)
pure virtual

Read a float* value from the PdxReader and sets array length.

C++ float* is mapped to Java float[].

Parameters
fieldNamename of the field to read
Returns
value of type float*.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readInt()

virtual int32_t apache::geode::client::PdxReader::readInt ( const std::string &  fieldName)
pure virtual

Read a int32_t value from the PdxReader.

C++ int32_t is mapped to Java int

Parameters
fieldNamename of the field to read
Returns
value of type int32_t.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readIntArray()

virtual std::vector< int32_t > apache::geode::client::PdxReader::readIntArray ( const std::string &  fieldName)
pure virtual

Read a int32_t* value from the PdxReader and sets array length.

C++ int32_t* is mapped to Java int[].

Parameters
fieldNamename of the field to read
Returns
value of type int32_t*.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readLong()

virtual int64_t apache::geode::client::PdxReader::readLong ( const std::string &  fieldName)
pure virtual

Read a int64_t value from the PdxReader.

C++ int64_t is mapped to Java long

Parameters
fieldNamename of the field to read
Returns
value of type int64_t.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readLongArray()

virtual std::vector< int64_t > apache::geode::client::PdxReader::readLongArray ( const std::string &  fieldName)
pure virtual

Read a int64_t* value from the PdxReader and sets array length.

C++ int64_t* is mapped to Java long[].

Parameters
fieldNamename of the field to read
Returns
value of type int64_t*.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readObject()

virtual std::shared_ptr< Cacheable > apache::geode::client::PdxReader::readObject ( const std::string &  fieldName)
pure virtual

Read a std::shared_ptr<Cacheable> value from the PdxReader.

C++ std::shared_ptr<Cacheable> is mapped to Java object

Parameters
fieldNamename of the field to read
Returns
value of type std::shared_ptr<Cacheable>.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readObjectArray()

virtual std::shared_ptr< CacheableObjectArray > apache::geode::client::PdxReader::readObjectArray ( const std::string &  fieldName)
pure virtual

Read a std::shared_ptr<CacheableObjectArray> value from the PdxReader.

C++ std::shared_ptr<CacheableObjectArray> is mapped to Java Object[].

Parameters
fieldNamename of the field to read
Returns
value of type std::shared_ptr<CacheableObjectArray>.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readShort()

virtual int16_t apache::geode::client::PdxReader::readShort ( const std::string &  fieldName)
pure virtual

Read a int16_t value from the PdxReader.

C++ int16_t is mapped to Java short

Parameters
fieldNamename of the field to read
Returns
value of type int16_t.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readShortArray()

virtual std::vector< int16_t > apache::geode::client::PdxReader::readShortArray ( const std::string &  fieldName)
pure virtual

Read a int16_t* value from the PdxReader and sets array length.

C++ int16_t* is mapped to Java short[].

Parameters
fieldNamename of the field to read
Returns
value of type int16_t*.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readString()

virtual std::string apache::geode::client::PdxReader::readString ( const std::string &  fieldName)
pure virtual

Read a std::string value from the PdxReader.

C++ std::string is mapped to Java String

Parameters
fieldNamename of the field to read
Returns
value of type std::string*. Refer to the class description for how to free the return value.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readStringArray()

virtual std::vector< std::string > apache::geode::client::PdxReader::readStringArray ( const std::string &  fieldName)
pure virtual

Read a array of strings from the PdxReader.

C++ std::vector<std::string> is mapped to Java String[].

Parameters
fieldNamename of the field to read
Returns
value of type std::vector<std::string>. Refer to the class description for how to free the return value.
Exceptions
IllegalStateExceptionif PdxReader doesn't have the named field.
See also
PdxReader::hasField

◆ readUnreadFields()

virtual std::shared_ptr< PdxUnreadFields > apache::geode::client::PdxReader::readUnreadFields ( )
pure virtual

This method returns an object that represents all the unread fields which must be passed to PdxWriter#writeUnreadFields in the toData code.

Note that if CacheFactory#setPdxIgnoreUnreadFields is set to true then this method will always return an object that has no unread fields.

Returns
an object that represents the unread fields.

Apache Geode C++ Cache API Documentation