org.jgroups.protocols
Class UDP

java.lang.Object
  extended by org.jgroups.stack.Protocol
      extended by org.jgroups.protocols.TP
          extended by org.jgroups.protocols.UDP
All Implemented Interfaces:
java.lang.Runnable

public class UDP
extends TP
implements java.lang.Runnable

IP multicast transport based on UDP. Messages to the group (msg.dest == null) will be multicast (to all group members), whereas point-to-point messages (msg.dest != null) will be unicast to a single member. Uses a multicast and a unicast socket.

The following properties are read by the UDP protocol:

Version:
$Id: UDP.java,v 1.123.2.4 2007/06/05 07:56:22 belaban Exp $
Author:
Bela Ban

Nested Class Summary
 class UDP.UcastReceiver
           
 
Field Summary
 
Fields inherited from class org.jgroups.protocols.TP
bind_addr, channel_name, local_addr, members, timer, view
 
Fields inherited from class org.jgroups.stack.Protocol
down_handler, down_prot, down_queue, down_thread, down_thread_prio, log, observer, props, stack, stats, up_handler, up_prot, up_queue, up_thread, up_thread_prio
 
Constructor Summary
UDP()
          Creates the UDP protocol, and initializes the state variables, does however not start any sockets or threads.
 
Method Summary
protected  java.net.DatagramSocket createDatagramSocketWithBindPort()
          Creates a DatagramSocket when bind_port > 0.
protected  java.net.DatagramSocket createEphemeralDatagramSocket()
          Creates a DatagramSocket with a random port.
 java.lang.String getInfo()
           
 java.lang.String getName()
           
protected  void handleConfigEvent(java.util.HashMap map)
           
 void postUnmarshalling(Message msg, Address dest, Address src, boolean multicast)
           
 void postUnmarshallingList(Message msg, Address dest, boolean multicast)
           
 void run()
           
 void sendToAllMembers(byte[] data, int offset, int length)
          Send to all members in the group.
 void sendToSingleMember(Address dest, byte[] data, int offset, int length)
          Send to all members in the group.
 boolean setProperties(java.util.Properties props)
          Setup the Protocol instance acording to the configuration string.
protected  void setThreadNames()
           
 void start()
          Creates the unicast and multicast sockets and starts the unicast and multicast receiver threads
 void stop()
          This method is called on a Channel.disconnect().
protected  void unsetThreadNames()
           
 
Methods inherited from class org.jgroups.protocols.TP
down, dumpStats, getBindAddress, getBindToAllInterfaces, getChannelName, getIncomingQueueSize, getLocalAddress, getMaxBundleSize, getMaxBundleTimeout, getNumBytesReceived, getNumBytesSent, getNumMessagesReceived, getNumMessagesSent, getOutgoingQueueMaxSize, getOutgoingQueueSize, getReceiveInterfaces, getSendInterfaces, handleDownEvent, init, isDiscardIncompatiblePackets, isEnableBundling, isLoopback, isReceiveOnAllInterfaces, isSendOnAllInterfaces, isUseIncomingPacketHandler, isUseOutgoingPacketHandler, receive, resetStats, setBindAddress, setBindToAllInterfaces, setDiscardIncompatiblePackets, setEnableBundling, setLoopback, setMaxBundleSize, setMaxBundleTimeout, setOutgoingQueueMaxSize, startUpHandler, toString, up
 
Methods inherited from class org.jgroups.stack.Protocol
destroy, downThreadEnabled, enableStats, getDownProtocol, getDownQueue, getProperties, getUpProtocol, getUpQueue, handleSpecialDownEvent, passDown, passUp, printStats, providedDownServices, providedUpServices, receiveDownEvent, receiveUpEvent, requiredDownServices, requiredUpServices, setDownProtocol, setObserver, setPropertiesInternal, setProtocolStack, setUpProtocol, startDownHandler, statsEnabled, stopInternal, upThreadEnabled
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

UDP

public UDP()
Creates the UDP protocol, and initializes the state variables, does however not start any sockets or threads.

Method Detail

setProperties

public boolean setProperties(java.util.Properties props)
Setup the Protocol instance acording to the configuration string. The following properties are read by the UDP protocol:

Overrides:
setProperties in class TP
Returns:
true if no other properties are left. false if the properties still have data in them, ie , properties are left over and not handled by the protocol stack

run

public void run()
Specified by:
run in interface java.lang.Runnable

getInfo

public java.lang.String getInfo()
Specified by:
getInfo in class TP

sendToAllMembers

public void sendToAllMembers(byte[] data,
                             int offset,
                             int length)
                      throws java.lang.Exception
Description copied from class: TP
Send to all members in the group. UDP would use an IP multicast message, whereas TCP would send N messages, one for each member

Specified by:
sendToAllMembers in class TP
Parameters:
data - The data to be sent. This is not a copy, so don't modify it
Throws:
java.lang.Exception

sendToSingleMember

public void sendToSingleMember(Address dest,
                               byte[] data,
                               int offset,
                               int length)
                        throws java.lang.Exception
Description copied from class: TP
Send to all members in the group. UDP would use an IP multicast message, whereas TCP would send N messages, one for each member

Specified by:
sendToSingleMember in class TP
Parameters:
dest - Must be a non-null unicast address
data - The data to be sent. This is not a copy, so don't modify it
Throws:
java.lang.Exception

postUnmarshalling

public void postUnmarshalling(Message msg,
                              Address dest,
                              Address src,
                              boolean multicast)
Specified by:
postUnmarshalling in class TP

postUnmarshallingList

public void postUnmarshallingList(Message msg,
                                  Address dest,
                                  boolean multicast)
Specified by:
postUnmarshallingList in class TP

getName

public java.lang.String getName()
Specified by:
getName in class Protocol

start

public void start()
           throws java.lang.Exception
Creates the unicast and multicast sockets and starts the unicast and multicast receiver threads

Overrides:
start in class TP
Throws:
java.lang.Exception - Thrown if protocol cannot be started successfully. This will cause the ProtocolStack to fail, so Channel.connect(String) will throw an exception

stop

public void stop()
Description copied from class: Protocol
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

Overrides:
stop in class TP

createEphemeralDatagramSocket

protected java.net.DatagramSocket createEphemeralDatagramSocket()
                                                         throws java.net.SocketException
Creates a DatagramSocket with a random port. Because in certain operating systems, ports are reused, we keep a list of the n last used ports, and avoid port reuse

Throws:
java.net.SocketException

createDatagramSocketWithBindPort

protected java.net.DatagramSocket createDatagramSocketWithBindPort()
                                                            throws java.lang.Exception
Creates a DatagramSocket when bind_port > 0. Attempts to allocate the socket with port == bind_port, and increments until it finds a valid port, or until port_range has been exceeded

Returns:
DatagramSocket The newly created socket
Throws:
java.lang.Exception

setThreadNames

protected void setThreadNames()
Overrides:
setThreadNames in class TP

unsetThreadNames

protected void unsetThreadNames()
Overrides:
unsetThreadNames in class TP

handleConfigEvent

protected void handleConfigEvent(java.util.HashMap map)
Overrides:
handleConfigEvent in class TP


Copyright ? 1998-2006 Bela Ban. All Rights Reserved.