gemfire::CacheableKey Class Reference

Inherits gemfire::Serializable.

Inherited by gemfire::CacheableDate, gemfire::CacheableKeyType< TObj, TYPEID, TYPENAME, SPRINTFSYM, STRSIZE >, and gemfire::CacheableString.


Detailed Description

Represents a cacheable key.

Public Member Functions

virtual int32_t classId () const =0
virtual int8_t DSFID () const
virtual SerializablefromData (DataInput &input)=0
virtual uint32_t hashcode () const =0
 return 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
virtual bool operator== (const CacheableKey &other) const =0
 return 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 =0
virtual
CacheableStringPtr 
toString () const
 Display this object as 'string', which depends on the implementation in the subclasses.
virtual int8_t typeId () const

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 void registerType (TypeFactoryMethod creationFunction)

Protected Member Functions

 CacheableKey ()
 Constructor.
virtual ~CacheableKey ()
 Destructor.

Constructor & Destructor Documentation

gemfire::CacheableKey::CacheableKey (  )  [inline, protected]

Constructor.

virtual gemfire::CacheableKey::~CacheableKey (  )  [inline, protected, virtual]

Destructor.


Member Function Documentation

virtual int32_t gemfire::Serializable::classId (  )  const [pure virtual, inherited]

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

The classId must be unique within an application suite. Using a negative value may result in undefined behavior.

Implemented in gemfire::CacheableKeyType< TObj, TYPEID, TYPENAME, SPRINTFSYM, STRSIZE >, gemfire::CacheableArrayType< TObj, TYPEID >, gemfire::CacheableContainerType< TBase, TYPEID >, gemfire::CacheableDate, gemfire::CacheableFileName, gemfire::CacheableObjectArray, gemfire::CacheableString, gemfire::CacheableUndefined, gemfire::Properties, gemfire::RegionAttributes, and gemfire::Struct.

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

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.

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::Serializable::fromData ( DataInput input  )  [pure virtual, inherited]

deserialize this object, typical implementation should return the 'this' pointer.

Implemented in gemfire::CacheableKeyType< TObj, TYPEID, TYPENAME, SPRINTFSYM, STRSIZE >, gemfire::CacheableArrayType< TObj, TYPEID >, gemfire::CacheableContainerType< TBase, TYPEID >, gemfire::CacheableDate, gemfire::CacheableFileName, gemfire::CacheableObjectArray, gemfire::CacheableString, gemfire::CacheableUndefined, gemfire::Properties, gemfire::RegionAttributes, and gemfire::Struct.

virtual uint32_t gemfire::CacheableKey::hashcode (  )  const [pure virtual]

return the hashcode for this key.

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

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

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::Serializable::objectSize (  )  const [virtual, inherited]

return the size in bytes of the instance being serialized. This is used to determine whether the cache is using up more physical memory than it has been configured to use. The method can return zero if the user does not require the ability to control cache memory utilization. Note that you must implement this only if you use the HeapLRU feature.

Reimplemented in gemfire::CacheableKeyType< TObj, TYPEID, TYPENAME, SPRINTFSYM, STRSIZE >, gemfire::CacheableArrayType< TObj, TYPEID >, gemfire::CacheableContainerType< TBase, TYPEID >, gemfire::CacheableDate, gemfire::CacheableObjectArray, gemfire::CacheableString, gemfire::CacheableUndefined, gemfire::Properties, gemfire::RegionAttributes, and gemfire::Struct.

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

return true if this key matches other.

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

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::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::Serializable::toData ( DataOutput output  )  const [pure virtual, inherited]

serialize this object

Implemented in gemfire::CacheableKeyType< TObj, TYPEID, TYPENAME, SPRINTFSYM, STRSIZE >, gemfire::CacheableArrayType< TObj, TYPEID >, gemfire::CacheableContainerType< TBase, TYPEID >, gemfire::CacheableDate, gemfire::CacheableFileName, gemfire::CacheableObjectArray, gemfire::CacheableString, gemfire::CacheableUndefined, gemfire::Properties, gemfire::RegionAttributes, and gemfire::Struct.

virtual CacheableStringPtr gemfire::Serializable::toString (  )  const [virtual, inherited]

Display this object as 'string', which depends on the implementation in the subclasses.

The default implementation renders the classname.

The return value may be a temporary, so the caller has to ensure that the SharedPtr count does not go down to zero by storing the result in a variable or otherwise.

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

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

return the typeId byte of the instance being serialized. This is used by deserialization 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::CacheableKeyType< TObj, TYPEID, TYPENAME, SPRINTFSYM, STRSIZE >, gemfire::CacheableArrayType< TObj, TYPEID >, gemfire::CacheableContainerType< TBase, TYPEID >, gemfire::CacheableDate, gemfire::CacheableFileName, gemfire::CacheableObjectArray, gemfire::CacheableString, gemfire::CacheableUndefined, gemfire::Properties, gemfire::RegionAttributes, and gemfire::Struct.


GemFire C++ Cache API Documentation