VMware GemFire Native Client C++ API Reference
|
VMware VMware GemFire Native C++ Reference 10.4.3
|
PdxInstance provides run time access to the fields of a PDX without deserializing the PDX. More...
#include <PdxInstance.hpp>
Inherits apache::geode::client::PdxSerializable.
Inherited by apache::geode::client::WritablePdxInstance.
Public Member Functions | |
| virtual std::shared_ptr< WritablePdxInstance > | createWriter ()=0 |
Creates and returns a WritablePdxInstance whose initial values are those of this PdxInstance. | |
| virtual void | fromData (PdxReader &input) override=0 |
| Deserialize this object. | |
| virtual std::vector< bool > | getBooleanArrayField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in bool array type out param. | |
| virtual bool | getBooleanField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in bool type out param. | |
| virtual std::vector< int8_t > | getByteArrayField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in signed char array type out param. | |
| virtual int8_t | getByteField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in signed char type out param. | |
| virtual std::shared_ptr< CacheableDate > | getCacheableDateField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in std::shared_ptr<CacheableDate> type out param. | |
| virtual std::shared_ptr< Cacheable > | getCacheableField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in std::shared_ptr<Cacheable> type out param. | |
| virtual std::shared_ptr< CacheableObjectArray > | getCacheableObjectArrayField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in std::shared_ptr<CacheableObjectArray> type out param. | |
| virtual std::vector< char16_t > | getCharArrayField (const std::string &fieldName) const =0 |
| Reads the named field and sets its value in char array type out param. | |
| virtual char16_t | getCharField (const std::string &fieldName) const =0 |
| Reads the named field and sets its value in char type out param. | |
| virtual const std::string & | getClassName () const override=0 |
| Return the full name of the class that this pdx instance represents. | |
| virtual std::vector< double > | getDoubleArrayField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in double array type out param. | |
| virtual double | getDoubleField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in double type out param. | |
| virtual void | getField (const std::string &fieldName, int8_t ***value, int32_t &arrayLength, int32_t *&elementLength) const =0 |
| Reads the named field and sets its value in array of byte arrays type out param. | |
| virtual std::shared_ptr< CacheableStringArray > | getFieldNames ()=0 |
| Return an unmodifiable list of the field names on this PdxInstance. | |
| virtual PdxFieldTypes | getFieldType (const std::string &fieldname) const =0 |
| Return the type. | |
| virtual std::vector< float > | getFloatArrayField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in float array type out param. | |
| virtual float | getFloatField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in float type out param. | |
| virtual std::vector< int32_t > | getIntArrayField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in int32_t array type out param. | |
| virtual int32_t | getIntField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in int32_t type out param. | |
| virtual std::vector< int64_t > | getLongArrayField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in int64_t array type out param. | |
| virtual int64_t | getLongField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in int64_t type out param. | |
| virtual std::shared_ptr< PdxSerializable > | getObject ()=0 |
| Deserializes and returns the domain object that this instance represents. | |
| virtual std::vector< int16_t > | getShortArrayField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in int16_t array type out param. | |
| virtual int16_t | getShortField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in int16_t type out param. | |
| virtual std::vector< std::string > | getStringArrayField (const std::string &fieldname) const =0 |
| Reads the named field as a string array. | |
| virtual std::string | getStringField (const std::string &fieldname) const =0 |
| Reads the named field and sets its value in std::string type out param. | |
| virtual bool | hasField (const std::string &fieldname)=0 |
| Checks if the named field exists and returns the result. | |
| virtual int32_t | hashcode () const override=0 |
| Generates a hashcode based on the identity fields of this PdxInstance. | |
| virtual bool | isIdentityField (const std::string &fieldname)=0 |
Checks if the named field was PdxWriter#markIdentityFieldmarked as an identity field. | |
| virtual size_t | objectSize () const override=0 |
| virtual bool | operator== (const CacheableKey &other) const override=0 |
| Returns true if the given CacheableKey derived object is equals to this instance. | |
| virtual void | toData (PdxWriter &output) const override=0 |
| serialize this object in geode PDX format. | |
| virtual std::string | toString () const override=0 |
| Prints out all of the identity fields of this PdxInstance. | |
| ~PdxInstance () noexcept override=default | |
| destructor | |
Static Public Member Functions | |
| template<class _T > | |
| static std::shared_ptr< CacheableKey > | create (_T value) |
| Factory method that creates the key type that matches the type of value. | |
| template<class _T > | |
| static std::shared_ptr< Serializable > | create (_T value) |
| Factory method that creates the Serializable object that matches the type of value. | |
Protected Member Functions | |
| PdxInstance () | |
| constructors | |
Detailed Description
PdxInstance provides run time access to the fields of a PDX without deserializing the PDX.
Preventing deserialization saves time and memory. The PdxInstance implementation is a lightweight wrapper that simply refers to the raw bytes of the PDX that are kept in the cache. Applications can choose to access PdxInstances instead of C++ objects by configuring the Cache to prefer PDX instances during deserialization. This can be done in cache.xml by setting the attribute read-serialized to true on the pdx element, or it can be done programmatically using the setPdxReadSerialized method. Once this preference is configured, then any time deserialization of a PDX is done it will deserialize into a PdxInstance. PdxInstances are immutable. If you want to change one call createWriter.
Constructor & Destructor Documentation
◆ ~PdxInstance()
|
overridedefaultnoexcept |
destructor
◆ PdxInstance()
|
inlineprotected |
constructors
Member Function Documentation
◆ create() [1/2]
|
staticinherited |
Factory method that creates the key type that matches the type of value.
For user defined derivations of CacheableKey, the method apache::geode::client::CacheableKey::create may be overloaded.
◆ create() [2/2]
|
staticinherited |
Factory method that creates the Serializable object that matches the type of value.
For user defined derivations of Serializable, the method apache::geode::client::Serializable::create may be overloaded.
◆ createWriter()
|
pure virtual |
Creates and returns a WritablePdxInstance whose initial values are those of this PdxInstance.
This call returns a copy of the current field values so modifications made to the returned value will not modify this PdxInstance.
- Returns
- a
WritablePdxInstance
◆ fromData()
|
overridepure virtual |
Deserialize this object.
This is an internal method.
- Parameters
-
input to deserialize the PDX object
Implements apache::geode::client::PdxSerializable.
◆ getBooleanArrayField()
|
pure virtual |
Reads the named field and sets its value in bool array type out param.
bool* type corresponds to the Java boolean[] type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getBooleanField()
|
pure virtual |
Reads the named field and sets its value in bool type out param.
bool type corresponds to the Java boolean type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getByteArrayField()
|
pure virtual |
Reads the named field and sets its value in signed char array type out param.
int8_t* type corresponds to the Java byte[] type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getByteField()
|
pure virtual |
Reads the named field and sets its value in signed char type out param.
signed char type corresponds to the Java byte type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getCacheableDateField()
|
pure virtual |
Reads the named field and sets its value in std::shared_ptr<CacheableDate> type out param.
std::shared_ptr<CacheableDate> type is corresponding to java Java.util.date type.
- Parameters
-
fieldname name of the field to read std::shared_ptr<CacheableDate> type.
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getCacheableField()
|
pure virtual |
Reads the named field and sets its value in std::shared_ptr<Cacheable> type out param.
std::shared_ptr<Cacheable> type corresponds to the Java object type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field. For deserialization C++ Native Client requires the domain class to be registered.
- See also
- serializationRegistry->addPdxType
- PdxInstance::hasField
◆ getCacheableObjectArrayField()
|
pure virtual |
Reads the named field and sets its value in std::shared_ptr<CacheableObjectArray> type out param.
For deserialization C++ Native Client requires the domain class to be registered. std::shared_ptr<CacheableObjectArray> type corresponds to the Java Object[] type.
- Parameters
-
fieldname name of the field to read. std::shared_ptr<CacheableObjectArray> type.
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- serializationRegistry->addPdxType
- PdxInstance::hasField
◆ getCharArrayField()
|
pure virtual |
Reads the named field and sets its value in char array type out param.
char16_t* type corresponds to the Java char[] type.
- Parameters
-
fieldName name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getCharField()
|
pure virtual |
Reads the named field and sets its value in char type out param.
char type corresponds to the Java char type.
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getClassName()
|
overridepure virtual |
Return the full name of the class that this pdx instance represents.
- Returns
- the name of the class that this pdx instance represents.
- Exceptions
-
IllegalStateException if the PdxInstance typeid is not defined yet, to get classname or if PdxType is not defined for PdxInstance.
Implements apache::geode::client::PdxSerializable.
◆ getDoubleArrayField()
|
pure virtual |
Reads the named field and sets its value in double array type out param.
double* type corresponds to the Java double[] type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getDoubleField()
|
pure virtual |
Reads the named field and sets its value in double type out param.
double type corresponds to the Java double type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getField()
|
pure virtual |
Reads the named field and sets its value in array of byte arrays type out param.
int8_t** type corresponds to the Java byte[][] type.
- Parameters
-
fieldName name of the field to read. value value of the field to be set with array of byte arrays type. arrayLength arrayLength is set to the number of byte arrays. elementLength elementLength is set to individual byte array lengths.
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getFieldNames()
|
pure virtual |
Return an unmodifiable list of the field names on this PdxInstance.
- Returns
- an unmodifiable list of the field names on this PdxInstance
◆ getFieldType()
|
pure virtual |
Return the type.
- See also
- PdxInstance::PdxFieldTypes of the field in the pdx instance.
- Returns
- the type
- See also
- PdxInstance::PdxFieldTypes of the field in the pdx instance.
- Exceptions
-
IllegalStateException if the PdxInstance typeid is not defined yet, to get classname or if PdxType is not defined for PdxInstance.
◆ getFloatArrayField()
|
pure virtual |
Reads the named field and sets its value in float array type out param.
float* type corresponds to the Java float[] type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getFloatField()
|
pure virtual |
Reads the named field and sets its value in float type out param.
float type corresponds to the Java float type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getIntArrayField()
|
pure virtual |
Reads the named field and sets its value in int32_t array type out param.
int32_t* type corresponds to the Java int[] type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getIntField()
|
pure virtual |
Reads the named field and sets its value in int32_t type out param.
int32_t type corresponds to the Java int type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
◆ getLongArrayField()
|
pure virtual |
Reads the named field and sets its value in int64_t array type out param.
int64_t* type corresponds to the Java long[] type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getLongField()
|
pure virtual |
Reads the named field and sets its value in int64_t type out param.
int64_t type corresponds to the Java long type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getObject()
|
pure virtual |
Deserializes and returns the domain object that this instance represents.
For deserialization C++ Native Client requires the domain class to be registered.
- Returns
- the deserialized domain object.
- See also
- serializationRegistry->addPdxType
◆ getShortArrayField()
|
pure virtual |
Reads the named field and sets its value in int16_t array type out param.
int16_t* type corresponds to the Java short[] type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getShortField()
|
pure virtual |
Reads the named field and sets its value in int16_t type out param.
int16_t type corresponds to the Java short type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getStringArrayField()
|
pure virtual |
Reads the named field as a string array.
std::vector<std::string> type corresponds to the Java String[] type.
- Parameters
-
fieldname name of the field to read
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ getStringField()
|
pure virtual |
Reads the named field and sets its value in std::string type out param.
std::string type corresponds to the Java String type.
- Parameters
-
fieldname name of the field to read
- Returns
- string value for field.
- Exceptions
-
IllegalStateException if PdxInstance doesn't have the named field.
- See also
- PdxInstance::hasField
◆ hasField()
|
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
-
fieldname the name of the field to check
- Returns
trueif the named field exists; otherwisefalse
◆ hashcode()
|
overridepure virtual |
Generates a hashcode based on the identity fields of this PdxInstance.
If a PdxInstance has marked identity fields using PdxWriter#markIdentityField then only the marked identity fields are its identity fields. Otherwise all its fields are identity fields.
For deserialization C++ Native Client requires the domain class to be registered. If the field is an array then all array elements are used for hashcode computation. Otherwise the raw bytes of its value are used to compute the hash code.
- Exceptions
-
IllegalStateException if the field contains an element that is not of CacheableKey derived type.
- See also
- serializationRegistry->addPdxType
Implements apache::geode::client::CacheableKey.
◆ isIdentityField()
|
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
-
fieldname the name of the field to check
- Returns
trueif the named field exists and was marked as an identify field; otherwisefalse
◆ objectSize()
|
overridepure virtual |
- Returns
- the size of the object in bytes This is an internal method. It is used in case of heap LRU property is set.
Reimplemented from apache::geode::client::Serializable.
◆ operator==()
|
overridepure virtual |
Returns true if the given CacheableKey derived object is equals to this instance.
If other is not a PdxInstance then it is not equal to this instance. NOTE: Even if other is the result of calling getObject() it will not be equal to this instance
.
Otherwise equality of two PdxInstances is determined as follows:
- The domain class name must be equal for both PdxInstances
- Each identity field must be equal.
If one of the instances does not have a field that the other one does then equals will assume it has the field with a default value. If a PdxInstance has marked identity fields using markIdentityField then only the marked identity fields are its identity fields. Otherwise all its fields are identity fields.
An identity field is equal if all the following are true:
- The field name is equal.
- The field type is equal.
- The field value is equal.
If an identity field is of type derived from Cacheable then it is deserialized. For deserialization C++ Native Client requires the domain class to be registered. If the deserialized object is an array then all array elements are used to determine equality. If an identity field is of type CacheableObjectArray then it is deserialized and all array elements are used to determine equality. For all other field types the value does not need to be deserialized. Instead the serialized raw bytes are compared and used to determine equality.
- Parameters
-
other the other instance to compare to this.
- Returns
trueif this instance is equal toother.
- Exceptions
-
IllegalStateException if the field contains an element that is not of CacheableKey derived type.
- See also
- serializationRegistry->addPdxType
Implements apache::geode::client::CacheableKey.
◆ toData()
|
overridepure virtual |
serialize this object in geode PDX format.
This is an internal method.
- Parameters
-
output to serialize the PDX object
Implements apache::geode::client::PdxSerializable.
◆ toString()
|
overridepure virtual |
Prints out all of the identity fields of this PdxInstance.
If a PdxInstance has marked identity fields using PdxWriter#markIdentityField then only the marked identity fields are its identity fields. Otherwise all its fields are identity fields
. For deserialization C++ Native Client requires the domain class to be registered.
- See also
- serializationRegistry->addPdxType
Reimplemented from apache::geode::client::Serializable.
Apache Geode C++ Cache API Documentation