|
|||||||||
| Home >> All >> org >> jgroups >> [ protocols overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
org.jgroups.protocols
Class FRAG2

java.lang.Objectorg.jgroups.stack.Protocol
org.jgroups.protocols.FRAG2
- public class FRAG2
- extends org.jgroups.stack.Protocol
Fragmentation layer. Fragments messages larger than frag_size into smaller packets. Reassembles fragmented packets into bigger ones. The fragmentation number is prepended to the messages as a header (and removed at the receiving side).
Each fragment is identified by (a) the sender (part of the message to which the header is appended), (b) the fragmentation ID (which is unique per FRAG2 layer (monotonically increasing) and (c) the fragement ID which ranges from 0 to number_of_fragments-1.
Requirement: lossless delivery (e.g. NAK, ACK). No requirement on ordering. Works for both unicast and
multicast messages.
Compared to FRAG, this protocol does not need to serialize the message in order to break it into
smaller fragments: it looks only at the message's buffer, which is a byte[] array anyway. We assume that the
size addition for headers and src and dest address is minimal when the transport finally has to serialize the
message, so we add a constant (1000 bytes).
- Version:
- $Id: FRAG2.java,v 1.20 2005/08/11 12:43:47 belaban Exp $
| Nested Class Summary | |
(package private) static class |
FRAG2.FragmentationList
A fragmentation list keeps a list of fragmentation tables sorted by an Address ( the sender ). |
(package private) static class |
FRAG2.FragmentationTable
Keeps track of the fragments that are received. |
| Field Summary | |
private int |
curr_id
|
(package private) int |
frag_size
The max number of bytes in a message. |
private FRAG2.FragmentationList |
fragment_list
|
private java.util.Vector |
members
|
private static java.lang.String |
name
|
(package private) long |
num_received_frags
|
(package private) long |
num_received_msgs
|
(package private) long |
num_sent_frags
|
(package private) long |
num_sent_msgs
|
(package private) int |
overhead
Number of bytes that we think the headers plus src and dest will take up when message is serialized by transport. |
| Fields inherited from class org.jgroups.stack.Protocol |
down_handler, down_prot, down_queue, down_thread, down_thread_prio, log, observer, props, stack, stats, trace, up_handler, up_prot, up_queue, up_thread, up_thread_prio, warn |
| Constructor Summary | |
FRAG2()
|
|
| Method Summary | |
void |
down(org.jgroups.Event evt)
Fragment a packet if larger than frag_size (add a header). |
(package private) void |
fragment(org.jgroups.Message msg)
Send all fragments as separate messages (with same ID !). |
int |
getFragSize()
|
java.lang.String |
getName()
|
(package private) int |
getNextId()
|
long |
getNumberOfReceivedFragments()
|
long |
getNumberOfReceivedMessages()
|
long |
getNumberOfSentFragments()
|
long |
getNumberOfSentMessages()
|
int |
getOverhead()
|
(package private) void |
handleConfigEvent(java.util.HashMap map)
|
void |
resetStats()
|
void |
setFragSize(int s)
|
void |
setOverhead(int o)
|
boolean |
setProperties(java.util.Properties props)
Setup the Protocol instance acording to the configuration string |
(package private) void |
unfragment(org.jgroups.Message msg)
1. |
void |
up(org.jgroups.Event evt)
If event is a message, if it is fragmented, re-assemble fragments into big message and pass up the stack. |
| Methods inherited from class org.jgroups.stack.Protocol |
destroy, downThreadEnabled, dumpStats, enableStats, getDownProtocol, getDownQueue, getProperties, getUpProtocol, getUpQueue, handleSpecialDownEvent, init, isTrace, isWarn, passDown, passUp, printStats, providedDownServices, providedUpServices, receiveDownEvent, receiveUpEvent, requiredDownServices, requiredUpServices, setDownProtocol, setObserver, setPropertiesInternal, setProtocolStack, setTrace, setUpProtocol, setWarn, start, startDownHandler, startUpHandler, statsEnabled, stop, stopInternal, upThreadEnabled |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
frag_size
int frag_size
- The max number of bytes in a message. If a message's buffer is bigger, it will be fragmented
overhead
int overhead
- Number of bytes that we think the headers plus src and dest will take up when
message is serialized by transport. This will be subtracted from frag_size
fragment_list
private final FRAG2.FragmentationList fragment_list
curr_id
private int curr_id
members
private final java.util.Vector members
name
private static final java.lang.String name
- See Also:
- Constant Field Values
num_sent_msgs
long num_sent_msgs
num_sent_frags
long num_sent_frags
num_received_msgs
long num_received_msgs
num_received_frags
long num_received_frags
| Constructor Detail |
FRAG2
public FRAG2()
| Method Detail |
getName
public final java.lang.String getName()
getFragSize
public int getFragSize()
setFragSize
public void setFragSize(int s)
getOverhead
public int getOverhead()
setOverhead
public void setOverhead(int o)
getNumberOfSentMessages
public long getNumberOfSentMessages()
getNumberOfSentFragments
public long getNumberOfSentFragments()
getNumberOfReceivedMessages
public long getNumberOfReceivedMessages()
getNumberOfReceivedFragments
public long getNumberOfReceivedFragments()
getNextId
int getNextId()
setProperties
public boolean setProperties(java.util.Properties props)
- Setup the Protocol instance acording to the configuration string
resetStats
public void resetStats()
down
public void down(org.jgroups.Event evt)
- Fragment a packet if larger than frag_size (add a header). Otherwise just pass down. Only
add a header if framentation is needed !
up
public void up(org.jgroups.Event evt)
- If event is a message, if it is fragmented, re-assemble fragments into big message and pass up
the stack.
fragment
void fragment(org.jgroups.Message msg)
- Send all fragments as separate messages (with same ID !).
Example:
Given the generated ID is 2344, number of fragments=3, message {dst,src,buf} would be fragmented into: [2344,3,0]{dst,src,buf1}, [2344,3,1]{dst,src,buf2} and [2344,3,2]{dst,src,buf3}
unfragment
void unfragment(org.jgroups.Message msg)
- 1. Get all the fragment buffers
2. When all are received -> Assemble them into one big buffer
3. Read headers and byte buffer from big buffer
4. Set headers and buffer in msg
5. Pass msg up the stack
handleConfigEvent
void handleConfigEvent(java.util.HashMap map)
|
|||||||||
| Home >> All >> org >> jgroups >> [ protocols overview ] | PREV CLASS NEXT CLASS | ||||||||
SUMMARY: JAVADOC | SOURCE | DOWNLOAD | NESTED | FIELD | CONSTR | METHOD |
DETAIL: FIELD | CONSTR | METHOD | ||||||||
JAVADOC