gemfire::CacheableEnum Class Reference

Inherits gemfire::CacheableKey.


Detailed Description

Since C++ enums cannot be directly passed as a parameter to PdxWriter's writeObject and PdxReader's readObject api wrap C++ enum in to a immutable wrapper CacheableEnum class type by specifying enum class name, enum value name and its ordinal.

C++ enum allows explicit setting of ordinal number, but it is up to the user to map java enumName with that of C++ enumName. Currently this wrapper only works as part of PdxSerializable member object and cannot be directly used in Region operations.

See also:
PdxWriter::writeObject

PdxReader::readObject


Public Member Functions

virtual int32_t classId () const
virtual int8_t DSFID () const
virtual SerializablefromData (DataInput &input)
const char * getEnumClassName () const
 
Returns:
enum class name.

const char * getEnumName () const
 
Returns:
enum name.

int32_t getEnumOrdinal () const
 
Returns:
enum ordinal.

virtual uint32_t hashcode () const
 
Returns:
the hashcode for this key.

virtual int32_t logString (char *buffer, int32_t maxLength) const
 Copy the string form of a key into a char* buffer for logging purposes.
virtual uint32_t objectSize () const
 
Returns:
the size of the object in bytes

virtual bool operator== (const CacheableKey &other) const
 
Returns:
true if this key matches other.

void preserveSB () const
 Atomically increment reference count.
int32_t refCount ()
 
Returns:
the reference count

void releaseSB () const
 Atomically decrement reference count, the SharedBase object is automatically deleted when its reference count goes to zero.
virtual void toData (DataOutput &output) const
virtual
CacheableStringPtr 
toString () const
 Display this object as c string.
virtual int8_t typeId () const
 ~CacheableEnum ()
 Destructor.

Static Public Member Functions

template<class PRIM>
static CacheableKeyPtr create (const PRIM value)
 Factory method that creates the key type that matches the type of value.
static CacheableEnumPtr create (const char *enumClassName, const char *enumName, int32_t ordinal)
 Factory method for creating an instance of CacheableEnum.
static SerializablecreateDeserializable ()
static void registerPdxSerializer (PdxSerializerPtr pdxSerializer)
 Register the PDX serializer which can handle serialization for instances of user domain classes.
static void registerPdxType (TypeFactoryMethodPdx creationFunction)
static void registerType (TypeFactoryMethod creationFunction)

Constructor & Destructor Documentation

gemfire::CacheableEnum::~CacheableEnum (  ) 

Destructor.


Member Function Documentation

virtual int32_t gemfire::CacheableEnum::classId (  )  const [inline, virtual]

Return the classId of the instance being serialized. This is used by deserialization to determine what instance type to create and deserialize into.

Implements gemfire::Serializable.

template<class PRIM>
static CacheableKeyPtr gemfire::CacheableKey::create ( const PRIM  value  )  [inline, static, inherited]

Factory method that creates the key type that matches the type of value.

For customer defined derivations of CacheableKey, the method gemfire::createKey may be overloaded. For pointer types (e.g. char*) the method gemfire::createKeyArr may be overloaded.

Reimplemented from gemfire::Serializable.

static CacheableEnumPtr gemfire::CacheableEnum::create ( const char *  enumClassName,
const char *  enumName,
int32_t  ordinal 
) [inline, static]

Factory method for creating an instance of CacheableEnum.

Parameters:
className the name of the enum class that maps to the java enum type.
enumName the name of the enum constant that maps to the java enum type.
ordinal the ordinal value of the enum constant that maps to the java enum type.
Returns:
a CacheableEnum representing C++ enum.

static Serializable* gemfire::CacheableEnum::createDeserializable (  )  [inline, static]

creation function for enum.

virtual int8_t gemfire::Serializable::DSFID (  )  const [virtual, inherited]

return the Data Serialization Fixed ID type. This is used to determine what instance type to create and deserialize into.

Note that this should not be overridden by custom implementations and is reserved only for builtin types.

Reimplemented in gemfire::CacheableUndefined, and gemfire::Struct.

virtual Serializable* gemfire::CacheableEnum::fromData ( DataInput input  )  [virtual]

deserialize this object

Implements gemfire::Serializable.

const char* gemfire::CacheableEnum::getEnumClassName (  )  const [inline]

Returns:
enum class name.

const char* gemfire::CacheableEnum::getEnumName (  )  const [inline]

Returns:
enum name.

int32_t gemfire::CacheableEnum::getEnumOrdinal (  )  const [inline]

Returns:
enum ordinal.

virtual uint32_t gemfire::CacheableEnum::hashcode (  )  const [virtual]

Returns:
the hashcode for this key.

Implements gemfire::CacheableKey.

virtual int32_t gemfire::CacheableKey::logString ( char *  buffer,
int32_t  maxLength 
) const [virtual, inherited]

Copy the string form of a key into a char* buffer for logging purposes.

Implementations should only generate a string as long as maxLength chars, and return the number of chars written. buffer is expected to be large enough to hold at least maxLength chars.

The default implementation renders the classname and instance address.

Reimplemented in gemfire::CacheableKeyType< TObj, TYPEID, TYPENAME, SPRINTFSYM, STRSIZE >, gemfire::CacheableDate, and gemfire::CacheableString.

virtual uint32_t gemfire::CacheableEnum::objectSize (  )  const [inline, virtual]

Returns:
the size of the object in bytes

Reimplemented from gemfire::Serializable.

virtual bool gemfire::CacheableEnum::operator== ( const CacheableKey other  )  const [virtual]

Returns:
true if this key matches other.

Implements gemfire::CacheableKey.

void gemfire::SharedBase::preserveSB (  )  const [inherited]

Atomically increment reference count.

int32_t gemfire::SharedBase::refCount (  )  [inline, inherited]

Returns:
the reference count

static void gemfire::Serializable::registerPdxSerializer ( PdxSerializerPtr  pdxSerializer  )  [static, inherited]

Register the PDX serializer which can handle serialization for instances of user domain classes.

See also:
PdxSerializer

static void gemfire::Serializable::registerPdxType ( TypeFactoryMethodPdx  creationFunction  )  [static, inherited]

register an Pdx instance factory method for a given type.

Exceptions:
IllegalStateException if the typeName has already been registered, or there is an error in registering the type; check errno for more information in the latter case.

static void gemfire::Serializable::registerType ( TypeFactoryMethod  creationFunction  )  [static, inherited]

register an instance factory method for a given type. During registration the factory will be invoked to extract the typeId to associate with this function.

Exceptions:
IllegalStateException if the typeId has already been registered, or there is an error in registering the type; check errno for more information in the latter case.

void gemfire::SharedBase::releaseSB (  )  const [inherited]

Atomically decrement reference count, the SharedBase object is automatically deleted when its reference count goes to zero.

virtual void gemfire::CacheableEnum::toData ( DataOutput output  )  const [virtual]

serialize this object

Implements gemfire::Serializable.

virtual CacheableStringPtr gemfire::CacheableEnum::toString (  )  const [inline, virtual]

Display this object as c string.

Reimplemented from gemfire::Serializable.

virtual int8_t gemfire::CacheableEnum::typeId (  )  const [inline, virtual]

return the typeId byte of the instance being serialized. This is used by deserialization to determine what instance type to create and deserialize into.

Reimplemented from gemfire::Serializable.


GemFire C++ Cache API Documentation