Package com.sun.enterprise.mgmt
Class LWRMulticast
- java.lang.Object
-
- com.sun.enterprise.mgmt.LWRMulticast
-
- All Implemented Interfaces:
MessageListener,java.util.EventListener
public class LWRMulticast extends java.lang.Object implements MessageListener
The LWRMulticast class is useful for sending and receiving JXTA multicast messages. A LWRMulticast is a (UDP) DatagramSocket, with additional capabilities for joining "groups" of other multicast hosts on the internet. A multicast group is specified within the context of PeerGroup and a propagate pipe advertisement. One would join a multicast group by first creating a MulticastSocket with the desired peer group and pipe advertisement.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringACKTAGAck message element nameprotected MessageListenermsgListenerThe application message listenerstatic java.lang.StringSEQTAGseq number message element namestatic java.lang.StringSRCIDTAGsource node id message element name
-
Constructor Summary
Constructors Constructor Description LWRMulticast(ClusterManager manager, MessageListener msgListener)Create a multicast channel bind it to a specific pipe within specified peer group
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Closes this LWRMulticast.java.util.Set<PeerID>getAckList()Returns a list of ack's received from nodes identified by PeerID'sstatic longgetSequenceID(Message msg)returns the source peer id of a messagelonggetSoTimeout()Gets the Timeout attribute of the LWRMulticaststatic PeerIDgetSource(Message msg)returns the source peer id of a messageintgetType()Returns the message type whichMessageis supporting i.g.booleanisBound()Returns the binding state of the LWRMulticast.booleanisClosed()Returns the closed state of the LWRMulticast.voidjoinGroup(ClusterManager manager, MessageListener msgListener)joins MutlicastSocket to specified pipe within the context of groupvoidreceiveMessageEvent(MessageEvent event)Processing aMessageEventbooleansend(PeerID pid, Message msg)Send a message.voidsend(Message msg, int threshold)Send a message to the predefined set of nodes, and expect a minimum of specified acks.booleansend(java.util.Set<PeerID> ids, Message msg)Send a message to a set of peersvoidsetSoTimeout(long timeout)Sets the Timeout attribute of the LWRMulticast a timeout of 0 blocks forever, by default this channel's timeout is set to 0
-
-
-
Field Detail
-
ACKTAG
public static final java.lang.String ACKTAG
Ack message element name- See Also:
- Constant Field Values
-
SEQTAG
public static final java.lang.String SEQTAG
seq number message element name- See Also:
- Constant Field Values
-
SRCIDTAG
public static final java.lang.String SRCIDTAG
source node id message element name- See Also:
- Constant Field Values
-
msgListener
protected transient MessageListener msgListener
The application message listener
-
-
Constructor Detail
-
LWRMulticast
public LWRMulticast(ClusterManager manager, MessageListener msgListener) throws java.io.IOException
Create a multicast channel bind it to a specific pipe within specified peer group- Parameters:
manager- the ClusterMangermsgListener- the application listener- Throws:
java.io.IOException- if an io error occurs
-
-
Method Detail
-
joinGroup
public void joinGroup(ClusterManager manager, MessageListener msgListener) throws java.io.IOException
joins MutlicastSocket to specified pipe within the context of group- Parameters:
manager- the ClusterMangermsgListener- The application message listener- Throws:
java.io.IOException- if an io error occurs
-
isBound
public boolean isBound()
Returns the binding state of the LWRMulticast.- Returns:
- true if the LWRMulticast successfully bound to an address
-
close
public void close()
Closes this LWRMulticast.
-
receiveMessageEvent
public void receiveMessageEvent(MessageEvent event) throws MessageIOException
Processing aMessageEvent- Specified by:
receiveMessageEventin interfaceMessageListener- Parameters:
event- a received message event- Throws:
MessageIOException- if I/O error occurs
-
getType
public int getType()
Description copied from interface:MessageListenerReturns the message type whichMessageis supporting i.g.Message.TYPE_CLUSTER_MANAGER_MESSAGEorMessage.TYPE_HEALTH_MONITOR_MESSAGE's integer value or etc...- Specified by:
getTypein interfaceMessageListener- Returns:
- the message type about which this listener is concerned
-
getAckList
public java.util.Set<PeerID> getAckList()
Returns a list of ack's received from nodes identified by PeerID's- Returns:
- a List of PeerID's
-
getSoTimeout
public long getSoTimeout()
Gets the Timeout attribute of the LWRMulticast- Returns:
- The soTimeout value
-
setSoTimeout
public void setSoTimeout(long timeout) throws java.io.IOExceptionSets the Timeout attribute of the LWRMulticast a timeout of 0 blocks forever, by default this channel's timeout is set to 0- Parameters:
timeout- The new soTimeout value- Throws:
java.io.IOException- if an I/O error occurs
-
isClosed
public boolean isClosed()
Returns the closed state of the LWRMulticast.- Returns:
- true if the channel has been closed
-
getSequenceID
public static long getSequenceID(Message msg)
returns the source peer id of a message- Parameters:
msg- message- Returns:
- The source value
-
getSource
public static PeerID getSource(Message msg)
returns the source peer id of a message- Parameters:
msg- message- Returns:
- The source value
-
send
public void send(Message msg, int threshold) throws java.io.IOException
Send a message to the predefined set of nodes, and expect a minimum of specified acks.This method blocks until ack's upto to the specified threshold have been received or the timeout has been reached. A call to getAckList() returns a list of ack source peer ID's
- Parameters:
msg- the message to sendthreshold- the minimun of ack expected, 0 indicates none are expected- Throws:
java.io.IOException- if an i/o error occurs, or SocketTimeoutException if the threshold is not met within timeout
-
send
public boolean send(PeerID pid, Message msg) throws java.io.IOException
Send a message.- Parameters:
pid- destination PeerIDmsg- the message to send- Returns:
- boolean
trueif the message has been sent otherwisefalse.false. is commonly returned for non-error related congestion, meaning that you should be able to send the message after waiting some amount of time. - Throws:
java.io.IOException- if an i/o error occurs
-
send
public boolean send(java.util.Set<PeerID> ids, Message msg) throws java.io.IOException
Send a message to a set of peers- Parameters:
ids- destination PeerIDsmsg- the message to send- Returns:
- boolean
trueif the message has been sent otherwisefalse.false. is commonly returned for non-error related congestion, meaning that you should be able to send the message after waiting some amount of time. - Throws:
java.io.IOException- if an i/o error occurs
-
-