|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jgroups.Message
A Message encapsulates data sent to members of a group. It contains among other things the address of the sender, the destination address, a payload (byte buffer) and a list of headers. Headers are added by protocols on the sender side and removed by protocols on the receiver's side.
The byte buffer can point to a reference, and we can subset it using index and length. However, when the message is serialized, we only write the bytes between index and length.
Field Summary | |
protected Address |
dest_addr
|
protected java.util.Map |
headers
Map |
protected int |
length
The number of bytes in the buffer (usually buf.length is buf not equal to null). |
protected static org.apache.commons.logging.Log |
log
|
protected int |
offset
The index into the payload (usually 0) |
protected Address |
src_addr
|
Constructor Summary | |
Message()
|
|
Message(Address dest,
Address src,
byte[] buf)
Public constructor |
|
Message(Address dest,
Address src,
byte[] buf,
int offset,
int length)
Constructs a message. |
|
Message(Address dest,
Address src,
java.io.Serializable obj)
Public constructor |
|
Message(boolean create_headers)
|
Method Summary | |
protected java.lang.Object |
clone()
|
Message |
copy()
|
Message |
copy(boolean copy_buffer)
Create a copy of the message. |
byte[] |
getBuffer()
Returns a copy of the buffer if offset and length are used, otherwise a reference. |
Address |
getDest()
|
Header |
getHeader(java.lang.String key)
|
java.util.Map |
getHeaders()
|
int |
getLength()
Returns the number of bytes in the buffer |
java.lang.Object |
getObject()
|
int |
getOffset()
Returns the offset into the buffer at which the data starts |
byte[] |
getRawBuffer()
Returns a reference to the payload (byte buffer). |
Address |
getSrc()
|
Message |
makeReply()
|
java.lang.String |
printObjectHeaders()
|
void |
putHeader(java.lang.String key,
Header hdr)
Puts a header given a key into the hashmap. |
void |
readExternal(java.io.ObjectInput in)
|
void |
readFrom(java.io.DataInputStream in)
Read the state of the current object (including superclasses) from instream Note that the input stream must not be closed |
Header |
removeHeader(java.lang.String key)
|
void |
removeHeaders()
|
void |
reset()
Nulls all fields of this message so that the message can be reused. |
void |
setBuffer(byte[] b)
|
void |
setBuffer(byte[] b,
int offset,
int length)
Set the internal buffer to point to a subset of a given buffer |
void |
setDest(Address new_dest)
|
void |
setObject(java.io.Serializable obj)
|
void |
setSrc(Address new_src)
|
long |
size()
Returns size of buffer, plus some constant overhead for src and dest, plus number of headers time some estimated size/header. |
java.lang.String |
toString()
|
java.lang.String |
toStringAsObject()
Tries to read an object from the message's buffer and prints it |
void |
writeExternal(java.io.ObjectOutput out)
|
void |
writeTo(java.io.DataOutputStream out)
Streams all members (dest and src addresses, buffer and headers) to the output stream. |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
protected Address dest_addr
protected Address src_addr
protected transient int offset
protected transient int length
protected java.util.Map headers
protected static final org.apache.commons.logging.Log log
Constructor Detail |
public Message(Address dest, Address src, byte[] buf)
dest
- Address of receiver. If it is null or a string, then
it is sent to the group (either to current group or to the group as given
in the string). If it is a Vector, then it contains a number of addresses
to which it must be sent. Otherwise, it contains a single destination.Addresses are generally untyped (all are of type Object. A channel instance must know what types of addresses it expects and downcast accordingly.
src
- Address of senderbuf
- Message to be sent. Note that this buffer must not be modified (e.g. buf[0]=0 is
not allowed), since we don't copy the contents on clopy() or clone().public Message(Address dest, Address src, byte[] buf, int offset, int length)
dest
- Address of receiver. If it is null or a string, then
it is sent to the group (either to current group or to the group as given
in the string). If it is a Vector, then it contains a number of addresses
to which it must be sent. Otherwise, it contains a single destination.Addresses are generally untyped (all are of type Object. A channel instance must know what types of addresses it expects and downcast accordingly.
src
- Address of senderbuf
- A reference to a byte bufferoffset
- The index into the byte bufferlength
- The number of bytes to be used from buf. Both index and length are checked for
array index violations and an ArrayIndexOutOfBoundsException will be thrown if invalidpublic Message(Address dest, Address src, java.io.Serializable obj)
dest
- Address of receiver. If it is null or a string, then
it is sent to the group (either to current group or to the group as given
in the string). If it is a Vector, then it contains a number of addresses
to which it must be sent. Otherwise, it contains a single destination.Addresses are generally untyped (all are of type Object. A channel instance must know what types of addresses it expects and downcast accordingly.
src
- Address of senderobj
- The object will be serialized into the byte buffer. Object
has to be serializable ! Note that the resulting buffer must not be modified
(e.g. buf[0]=0 is not allowed), since we don't copy the contents on clopy() or clone().public Message()
public Message(boolean create_headers)
Method Detail |
public Address getDest()
public void setDest(Address new_dest)
public Address getSrc()
public void setSrc(Address new_src)
public byte[] getRawBuffer()
public byte[] getBuffer()
public void setBuffer(byte[] b)
public void setBuffer(byte[] b, int offset, int length)
b
- The reference to a given buffer. If null, we'll reset the buffer to nulloffset
- The initial positionlength
- The number of bytespublic int getOffset()
public int getLength()
public java.util.Map getHeaders()
public void setObject(java.io.Serializable obj)
public java.lang.Object getObject()
public void reset()
public void putHeader(java.lang.String key, Header hdr)
public Header removeHeader(java.lang.String key)
public void removeHeaders()
public Header getHeader(java.lang.String key)
public Message copy()
public Message copy(boolean copy_buffer)
copy_buffer
-
protected java.lang.Object clone() throws java.lang.CloneNotSupportedException
java.lang.CloneNotSupportedException
public Message makeReply()
public java.lang.String toString()
public java.lang.String toStringAsObject()
public long size()
Size estimations don't have to be very accurate since this is mainly used by FRAG to determine whether to fragment a message or not. Fragmentation will then serialize the message, therefore getting the correct value.
public java.lang.String printObjectHeaders()
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
writeExternal
in interface java.io.Externalizable
java.io.IOException
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
readExternal
in interface java.io.Externalizable
java.io.IOException
java.lang.ClassNotFoundException
public void writeTo(java.io.DataOutputStream out) throws java.io.IOException
writeTo
in interface Streamable
out
-
java.io.IOException
public void readFrom(java.io.DataInputStream in) throws java.io.IOException, java.lang.IllegalAccessException, java.lang.InstantiationException
Streamable
readFrom
in interface Streamable
java.io.IOException
java.lang.IllegalAccessException
java.lang.InstantiationException
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |