org.jgroups.protocols.pbcast
Class NAKACK
- Retransmitter.RetransmitCommand
Negative AcKnowledgement layer (NAKs). Messages are assigned a monotonically increasing sequence number (seqno).
Receivers deliver messages ordered according to seqno and request retransmission of missing messages. Retransmitted
messages are bundled into bigger ones, e.g. when getting an xmit request for messages 1-10, instead of sending 10
unicast messages, we bundle all 10 messages into 1 and send it. However, since this protocol typically sits below
FRAG, we cannot count on FRAG to fragement/defragment the (possibly) large message into smaller ones. Therefore we
only bundle messages up to max_xmit_size bytes to prevent too large messages. For example, if the bundled message
size was a total of 34000 bytes, and max_xmit_size=16000, we'd send 3 messages: 2 16K and a 2K message. Note that
max_xmit_size should be the same value as FRAG.frag_size (or smaller).
Retransmit requests are always sent
to the sender. If the sender dies, and not everyone has received its messages, they will be lost. In the future, this
may be changed to have receivers store all messages, so that retransmit requests can be answered by any member.
Trivial to implement, but not done yet. For most apps, the default retransmit properties are sufficient, if not use
vsync.
- Bela Ban
down_handler , down_prot , down_queue , down_thread , down_thread_prio , log , observer , props , stack , up_handler , up_prot , up_queue , up_thread , up_thread_prio |
destroy , down , getDownProtocol , getDownQueue , getName , getProperties , getUpProtocol , getUpQueue , handleSpecialDownEvent , init , passDown , passUp , providedDownServices , providedUpServices , receiveDownEvent , receiveUpEvent , requiredDownServices , requiredUpServices , setDownProtocol , setObserver , setProperties , setPropertiesInternal , setProtocolStack , setUpProtocol , start , startDownHandler , startUpHandler , stop , stopInternal , up |
down
public void down(Event evt)
Callback. Called by superclass when event may be handled.
Do not use passDown()
in this
method as the event is passed down by default by the superclass after this method returns !
- down in interface Protocol
getName
public String getName()
- getName in interface Protocol
providedDownServices
public Vector providedDownServices()
List of events that are provided to layers below (they will be handled when sent down from
below).
- providedDownServices in interface Protocol
- Vector (of Integers)
providedUpServices
public Vector providedUpServices()
List of events that are provided to layers above (they will be handled when sent down from
above).
- providedUpServices in interface Protocol
- Vector (of Integers)
retransmit
public void retransmit(long first_seqno,
long last_seqno,
Address sender)
Implementation of Retransmitter.RetransmitCommand. Called by retransmission thread when gap is detected. Sends
XMIT_REQ to originator of msg
- retransmit in interface Retransmitter.RetransmitCommand
setProperties
public boolean setProperties(Properties props)
Configures the protocol initially. A configuration string consists of name=value
items, separated by a ';' (semicolon), e.g.:
"loopback=false;unicast_inport=4444"
- setProperties in interface Protocol
start
public void start()
throws Exception
This method is called on a
Channel.connect(String)
. Starts work.
Protocols are connected and queues are ready to receive events.
Will be called
from bottom to top. This call will replace
the
START and
START_OK events.
- start in interface Protocol
stop
public void stop()
This method is called on a
Channel.disconnect()
. Stops work (e.g. by closing multicast socket).
Will be called
from top to bottom. This means that at the time of the method invocation the
neighbor protocol below is still working. This method will replace the
STOP,
STOP_OK,
CLEANUP and
CLEANUP_OK events. The ProtocolStack guarantees that
when this method is called all messages in the down queue will have been flushed
- stop in interface Protocol
up
public void up(Event evt)
Callback. Called by superclass when event may be handled.
Do not use PassUp
in this
method as the event is passed up by default by the superclass after this method returns !
- up in interface Protocol
Copyright B) 2001,2002 www.jgroups.com . All Rights Reserved.