com.neeve.pkt
Class PktSubheaderROGRL

java.lang.Object
  extended by com.neeve.util.UtlListElement
      extended by com.neeve.pkt.PktSerializable
          extended by com.neeve.pkt.PktBody
              extended by com.neeve.pkt.PktSubheader
                  extended by com.neeve.pkt.PktSubheaderVariable
                      extended by com.neeve.pkt.PktSubheaderROGRL
All Implemented Interfaces:
PktBuffer.Initializer

public final class PktSubheaderROGRL
extends PktSubheaderVariable

The ROGRL packet subheader.

This class is the subheader used by the ROG store persister to add control information to entries in the recovery log.

This packet subheader header is a versioned entity. The subheader version defines the format of the subheader i.e. what fields comprise the subheader and their relative locations when serialized. A crucial aspect of subheader versioning is that a version N subheader will always be a subset of a version M subheader where N < M i.e. all fields in version N of a subheader will be present and in the same position as fields in version M of the subheader. i.e. a subheader never shrinks or moves fields around. With time, the subheader can only grow. See the setter/getter method documentation for information on which subheader version the fields that they affect belong to.

Threading:
Packet subheaders are not safe for concurrent access by multiple threads.

Nested Class Summary
 
Nested classes/interfaces inherited from class com.neeve.pkt.PktSerializable
PktSerializable.DeserializeContext, PktSerializable.SerializeContext
 
Field Summary
static short ENTRY_TYPE_MESSAGE
          Specifies that the entry is for a message
static short ENTRY_TYPE_PUT
          Specifies that the entry is for a put
static short ENTRY_TYPE_REMOVE
          Specifies that the entry is for a remove
static short ENTRY_TYPE_SEND
          Specifies that the entry is for a send
static short ENTRY_TYPE_UPDATE
          Specifies that the entry is for an update
static int FLAG_COMMIT_END
          Specifies the end of a commit batch
 
Fields inherited from class com.neeve.pkt.PktSubheader
PREAMBLE_LENGTH, PREAMBLE_LENGTH_V1
 
Fields inherited from class com.neeve.util.UtlListElement
count, head, next, prev
 
Method Summary
 void copyObjectMetadataFrom(PktBuffer metadata)
          Copy the object metadata (V1 Subheader Field) from a packet buffer.
 void copyObjectMetadataTo(PktBuffer buffer, int offset)
          Copy the object metadata (V1 Subheader Field) to a packet buffer.
static PktBody create()
          Creates a default ROGRL subheader
static PktBody create(Properties props)
          Creates an ROGRL subheader
 int doGetSerializedLength()
          Implementation of PktBody.doGetSerializedLength()
 long getCheckpointVersion()
          Get the checkpoint version (V1 Subheader Field).
 short getContentEncodingType()
          Get the contentEncodingType type(V2 Subheader Field).
 boolean getFlagCommitEnd()
          Get the 'commit end' flag (V1 Subheader Field).
 int getFlags()
          Get the flags (V1 Subheader Field).
static short getLatestSubheaderVersion()
          Get the latest subheader version.
 short getLogEntryType()
          Get the log entry type (V1 Subheader Field).
 short getObjectFactoryId()
          Get the object factory id (V1 Subheader Field).
 com.eaio.uuid.UUID getObjectId()
          Get the object id (V1 Subheader Field).
 PktBuffer getObjectMetadata()
          Get the object metadata (V1 Subheader Field).
 short getObjectType()
          Get the object type (V1 Subheader Field).
 int getSerializedLength(ByteBuffer buffer)
          Implementation of PktSubheader.getSerializedLength(ByteBuffer)
 long getStableTransactionId()
          Get the stable transactionId (V1 Subheader Field).
 short getSubheaderVersion()
          Get the header format version (V1 Subheader Field).
 long getTimestamp()
          Get the persist timestamp (V3 Subheader Field).
 long getTransactionId()
          Get the transactionId (V1 Subheader Field).
 void initializeBuffer()
          Implementation of PktBuffer.Initializer.initializeBuffer()
static void prepare(PktPacket packet, com.eaio.uuid.UUID objectId, short ofid, short otype, short contentEncodingType, long transactionId, long stableTransactionId, long checkpointVersion, short entryType, long timestamp, byte flags)
          Prepare a packet with an ROGRL subheader with latest version.
 void setCheckpointVersion(long checkpointVersion)
          Set the checkpoint version (V1 Subheader Field).
 void setContentEncodingType(short contentEncodingType)
          Set the contentEncodingType type (V2 Subheader Field).
 void setFlagCommitEnd(boolean val)
          Set the 'commit end' flag (V1 Subheader Field).
 void setFlags(byte flags)
          Set the flags (V1 Subheader Field).
 void setLogEntryType(short entryType)
          Set the log entry type (V1 Subheader Field).
 void setObjectFactoryId(short ofid)
          Set the object factory id (V1 Subheader Field).
 void setObjectId(com.eaio.uuid.UUID objectId)
          Set the object id (V1 Subheader Field).
 void setObjectType(short otype)
          Set the object type (V1 Subheader Field).
 void setStableTransactionId(long stableTransactionId)
          Set the stable transaction id (V1 Subheader Field).
 void setTimestamp(long timestamp)
          Set the persist timestamp (V3 Subheader Field).
 void setTransactionId(long transactionId)
          Set the transaction id (V1 Subheader Field).
 String toString()
          Returns a string representation of the object
 
Methods inherited from class com.neeve.pkt.PktSubheader
getType
 
Methods inherited from class com.neeve.pkt.PktBody
deserialize, getBuffer, getSerializedLength, getType, isNative, reset, serialize
 
Methods inherited from class com.neeve.pkt.PktSerializable
deserialize, getDeserializationPolicy, getSerializationPolicy, isValidDeserializationPolicy, isValidSerializationPolicy, serialize, setDeserializationPolicy, setSerializationPolicy
 
Methods inherited from class com.neeve.util.UtlListElement
count, insertAfter, insertBefore, isLinked, next, previous, unlink, wipe
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FLAG_COMMIT_END

public static final int FLAG_COMMIT_END
Specifies the end of a commit batch

See Also:
Constant Field Values

ENTRY_TYPE_PUT

public static final short ENTRY_TYPE_PUT
Specifies that the entry is for a put

See Also:
Constant Field Values

ENTRY_TYPE_UPDATE

public static final short ENTRY_TYPE_UPDATE
Specifies that the entry is for an update

See Also:
Constant Field Values

ENTRY_TYPE_REMOVE

public static final short ENTRY_TYPE_REMOVE
Specifies that the entry is for a remove

See Also:
Constant Field Values

ENTRY_TYPE_SEND

public static final short ENTRY_TYPE_SEND
Specifies that the entry is for a send

See Also:
Constant Field Values

ENTRY_TYPE_MESSAGE

public static final short ENTRY_TYPE_MESSAGE
Specifies that the entry is for a message

See Also:
Constant Field Values
Method Detail

create

public static PktBody create(Properties props)
Creates an ROGRL subheader

Parameters:
props - The property set to use to qualify creation of the body.

create

public static PktBody create()
Creates a default ROGRL subheader


prepare

public static void prepare(PktPacket packet,
                           com.eaio.uuid.UUID objectId,
                           short ofid,
                           short otype,
                           short contentEncodingType,
                           long transactionId,
                           long stableTransactionId,
                           long checkpointVersion,
                           short entryType,
                           long timestamp,
                           byte flags)
Prepare a packet with an ROGRL subheader with latest version.

Parameters:
packet - The packet to prepare.
objectId - The object id to set.
ofid - The object's factory id.
otype - The object's type.
contentEncodingType - The encoding type to set.
transactionId - The current transaction id.
stableTransactionId - The stable transaction id.
checkpointVersion - The checkpoint version.
entryType - The log entry type
flags - The flags to set.
Threading:
This method is not safe for concurrent access by multiple threads on the same request and reply.

getLatestSubheaderVersion

public static final short getLatestSubheaderVersion()
Get the latest subheader version.

This method returns the latest subheader version i.e. the version used when subheaders are created explicitly i.e. not through deserialization

Threading:
This method is safe for concurrent access by multiple threads

doGetSerializedLength

public final int doGetSerializedLength()
Implementation of PktBody.doGetSerializedLength()


getSerializedLength

public final int getSerializedLength(ByteBuffer buffer)
Implementation of PktSubheader.getSerializedLength(ByteBuffer)

Specified by:
getSerializedLength in class PktSubheader

getSubheaderVersion

public final short getSubheaderVersion()
Get the header format version (V1 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads

setObjectId

public final void setObjectId(com.eaio.uuid.UUID objectId)
Set the object id (V1 Subheader Field).

Parameters:
objectId - The object id to set.
Threading:
This method is not safe for concurrent access by multiple threads.

getObjectId

public final com.eaio.uuid.UUID getObjectId()
Get the object id (V1 Subheader Field).

NOTE:
If the packet that this header belongs to is pooled, the validity of the returned UUID is only valid while the packet remains, undisposed. Once the object is returned to its pool the UUID may be wiped and reused. Consequently, callers that plan to use the returned id beyond this objects lifespan should either make a copy of it, or aquire this object to prevent it from be returned to its pool.

Threading:
This method is not safe for concurrent access by multiple threads.

setObjectFactoryId

public final void setObjectFactoryId(short ofid)
Set the object factory id (V1 Subheader Field).

Parameters:
ofid - The object factory id to set.
Threading:
This method is not safe for concurrent access by multiple threads.

getObjectFactoryId

public final short getObjectFactoryId()
Get the object factory id (V1 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads.

setObjectType

public final void setObjectType(short otype)
Set the object type (V1 Subheader Field).

Parameters:
otype - The object type to set.
Threading:
This method is not safe for concurrent access by multiple threads.

getObjectType

public final short getObjectType()
Get the object type (V1 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads.

setContentEncodingType

public final void setContentEncodingType(short contentEncodingType)
Set the contentEncodingType type (V2 Subheader Field).

Parameters:
contentEncodingType - The encoding type to set.
Threading:
This method is not safe for concurrent access by multiple threads.

getContentEncodingType

public final short getContentEncodingType()
Get the contentEncodingType type(V2 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads.

setTimestamp

public final void setTimestamp(long timestamp)
Set the persist timestamp (V3 Subheader Field).

Parameters:
timestamp - The timestamp to set.
Threading:
This method is not safe for concurrent access by multiple threads.

getTimestamp

public final long getTimestamp()
Get the persist timestamp (V3 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads.

setLogEntryType

public final void setLogEntryType(short entryType)
Set the log entry type (V1 Subheader Field).

Parameters:
entryType - The log entry type to set.
Threading:
This method is not safe for concurrent access by multiple threads.

getLogEntryType

public final short getLogEntryType()
Get the log entry type (V1 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads.

setTransactionId

public final void setTransactionId(long transactionId)
Set the transaction id (V1 Subheader Field).

Parameters:
transactionId - The transaction id to set.
Threading:
This method is not safe for concurrent access by multiple threads.

getTransactionId

public final long getTransactionId()
Get the transactionId (V1 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads.

setStableTransactionId

public final void setStableTransactionId(long stableTransactionId)
Set the stable transaction id (V1 Subheader Field).

Parameters:
stableTransactionId - The stable transaction id to set.
Threading:
This method is not safe for concurrent access by multiple threads.

getStableTransactionId

public final long getStableTransactionId()
Get the stable transactionId (V1 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads.

setCheckpointVersion

public final void setCheckpointVersion(long checkpointVersion)
Set the checkpoint version (V1 Subheader Field).

Parameters:
checkpointVersion - The checkpointVersion to set.
Threading:
This method is not safe for concurrent access by multiple threads.

getCheckpointVersion

public final long getCheckpointVersion()
Get the checkpoint version (V1 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads.

setFlags

public final void setFlags(byte flags)
Set the flags (V1 Subheader Field).

Parameters:
flags - The flags to set.
Threading:
This method is not safe for concurrent access by multiple threads.

getFlags

public final int getFlags()
Get the flags (V1 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads.

setFlagCommitEnd

public final void setFlagCommitEnd(boolean val)
Set the 'commit end' flag (V1 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads

getFlagCommitEnd

public final boolean getFlagCommitEnd()
Get the 'commit end' flag (V1 Subheader Field).

Threading:
This method is not safe for concurrent access by multiple threads

copyObjectMetadataFrom

public final void copyObjectMetadataFrom(PktBuffer metadata)
Copy the object metadata (V1 Subheader Field) from a packet buffer.

Threading:
This method is safe for concurrent access by multiple threads

getObjectMetadata

public final PktBuffer getObjectMetadata()
Get the object metadata (V1 Subheader Field).

The metadata returned by this method can be null.

Threading:
This method is safe for concurrent access by multiple threads

copyObjectMetadataTo

public final void copyObjectMetadataTo(PktBuffer buffer,
                                       int offset)
Copy the object metadata (V1 Subheader Field) to a packet buffer.

Threading:
This method is safe for concurrent access by multiple threads

initializeBuffer

public final void initializeBuffer()
Implementation of PktBuffer.Initializer.initializeBuffer()

Specified by:
initializeBuffer in interface PktBuffer.Initializer
Overrides:
initializeBuffer in class PktBody

toString

public final String toString()
Returns a string representation of the object

Overrides:
toString in class Object
Threading:
This method is safe for concurrent access by multiple threads


Copyright © 2015 Neeve Research, LLC. All Rights Reserved.