Rice Pastry API

org.mpisws.p2p.transport.commonapi
Class CommonAPITransportLayerImpl<Identifier>

java.lang.Object
  extended by org.mpisws.p2p.transport.commonapi.CommonAPITransportLayerImpl<Identifier>
All Implemented Interfaces:
CommonAPITransportLayer<Identifier>, LivenessListener<Identifier>, LivenessProvider<TransportLayerNodeHandle<Identifier>>, ProximityListener<Identifier>, ProximityProvider<TransportLayerNodeHandle<Identifier>>, TransportLayer<TransportLayerNodeHandle<Identifier>,RawMessage>, TransportLayerCallback<Identifier,java.nio.ByteBuffer>, Destructable

public class CommonAPITransportLayerImpl<Identifier>
extends java.lang.Object
implements CommonAPITransportLayer<Identifier>, TransportLayerCallback<Identifier,java.nio.ByteBuffer>, LivenessListener<Identifier>, ProximityListener<Identifier>


Field Summary
 
Fields inherited from interface org.mpisws.p2p.transport.liveness.LivenessListener
LIVENESS_ALIVE, LIVENESS_DEAD, LIVENESS_DEAD_FOREVER, LIVENESS_SUSPECTED
 
Constructor Summary
CommonAPITransportLayerImpl(TransportLayerNodeHandle localAddress, TransportLayer<Identifier,java.nio.ByteBuffer> tl, LivenessProvider<Identifier> livenessProvider, ProximityProvider<Identifier> proximityProvider, IdFactory idFactory, NodeHandleFactory<Identifier> nodeHandleFactory, RawMessageDeserializer deserializer, Environment env)
           
 
Method Summary
 void acceptMessages(boolean b)
          Toggle accepting incoming messages.
 void acceptSockets(boolean b)
          Toggle accepting new sockets.
 void addLivenessListener(LivenessListener<TransportLayerNodeHandle<Identifier>> name)
           
 void addProximityListener(ProximityListener<TransportLayerNodeHandle<Identifier>> name)
           
 boolean checkLiveness(TransportLayerNodeHandle<Identifier> i, java.util.Map<java.lang.String,java.lang.Integer> options)
          Returns wether a new notification will occur.
 void destroy()
           
 int getLiveness(TransportLayerNodeHandle<Identifier> i, java.util.Map<java.lang.String,java.lang.Integer> options)
           
 TransportLayerNodeHandle getLocalIdentifier()
          The local node.
 void incomingSocket(P2PSocket<Identifier> s)
          Notification of a new socket.
 void livenessChanged(Identifier i, int val)
          Called when the liveness changes.
 void messageReceived(Identifier i, java.nio.ByteBuffer m, java.util.Map<java.lang.String,java.lang.Integer> options)
          Called when a new message is received.
 SocketRequestHandle<TransportLayerNodeHandle<Identifier>> openSocket(TransportLayerNodeHandle<Identifier> i, SocketCallback<TransportLayerNodeHandle<Identifier>> deliverSocketToMe, java.util.Map<java.lang.String,java.lang.Integer> options)
          Open a socket to the Identifier
 int proximity(TransportLayerNodeHandle<Identifier> i)
           
 void proximityChanged(Identifier i, int newProx, java.util.Map<java.lang.String,java.lang.Integer> options)
           
 boolean removeLivenessListener(LivenessListener<TransportLayerNodeHandle<Identifier>> name)
           
 boolean removeProximityListener(ProximityListener<TransportLayerNodeHandle<Identifier>> name)
           
 MessageRequestHandle<TransportLayerNodeHandle<Identifier>,RawMessage> sendMessage(TransportLayerNodeHandle<Identifier> i, RawMessage m, MessageCallback<TransportLayerNodeHandle<Identifier>,RawMessage> deliverAckToMe, java.util.Map<java.lang.String,java.lang.Integer> options)
          Send the message to the identifier
 void setCallback(TransportLayerCallback<TransportLayerNodeHandle<Identifier>,RawMessage> callback)
          Set the callback for incoming sockets/messages
 void setErrorHandler(ErrorHandler<TransportLayerNodeHandle<Identifier>> handler)
          To be notified of problems not related to an outgoing messaage/socket.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CommonAPITransportLayerImpl

public CommonAPITransportLayerImpl(TransportLayerNodeHandle localAddress,
                                   TransportLayer<Identifier,java.nio.ByteBuffer> tl,
                                   LivenessProvider<Identifier> livenessProvider,
                                   ProximityProvider<Identifier> proximityProvider,
                                   IdFactory idFactory,
                                   NodeHandleFactory<Identifier> nodeHandleFactory,
                                   RawMessageDeserializer deserializer,
                                   Environment env)
Method Detail

acceptMessages

public void acceptMessages(boolean b)
Description copied from interface: TransportLayer
Toggle accepting incoming messages. Useful in flow control if overwhelmed by incoming sockets. Default: true

Specified by:
acceptMessages in interface TransportLayer<TransportLayerNodeHandle<Identifier>,RawMessage>

acceptSockets

public void acceptSockets(boolean b)
Description copied from interface: TransportLayer
Toggle accepting new sockets. Useful in flow control if overwhelmed by incoming sockets. Default: true

Specified by:
acceptSockets in interface TransportLayer<TransportLayerNodeHandle<Identifier>,RawMessage>

getLocalIdentifier

public TransportLayerNodeHandle getLocalIdentifier()
Description copied from interface: TransportLayer
The local node.

Specified by:
getLocalIdentifier in interface TransportLayer<TransportLayerNodeHandle<Identifier>,RawMessage>
Returns:
The local node.

sendMessage

public MessageRequestHandle<TransportLayerNodeHandle<Identifier>,RawMessage> sendMessage(TransportLayerNodeHandle<Identifier> i,
                                                                                         RawMessage m,
                                                                                         MessageCallback<TransportLayerNodeHandle<Identifier>,RawMessage> deliverAckToMe,
                                                                                         java.util.Map<java.lang.String,java.lang.Integer> options)
Description copied from interface: TransportLayer
Send the message to the identifier

Specified by:
sendMessage in interface TransportLayer<TransportLayerNodeHandle<Identifier>,RawMessage>
Parameters:
i - the destination
m - the message
deliverAckToMe - layer dependent notification when the message is sent (can indicate placed on the wire, point-to-point acknowledgement, or end-to-end acknowledgement)
options - delivery options (don't source route, encrypt etc) (may not be respected if layer cannot provide service)
Returns:
ability to cancel the message if no longer relevent

messageReceived

public void messageReceived(Identifier i,
                            java.nio.ByteBuffer m,
                            java.util.Map<java.lang.String,java.lang.Integer> options)
                     throws java.io.IOException
Description copied from interface: TransportLayerCallback
Called when a new message is received.

Specified by:
messageReceived in interface TransportLayerCallback<Identifier,java.nio.ByteBuffer>
Parameters:
i - The node it is coming from
m - the message
options - describe how the message arrived (udp/tcp, encrypted etc)
Throws:
java.io.IOException - if there is a problem decoding the message

setCallback

public void setCallback(TransportLayerCallback<TransportLayerNodeHandle<Identifier>,RawMessage> callback)
Description copied from interface: TransportLayer
Set the callback for incoming sockets/messages

Specified by:
setCallback in interface TransportLayer<TransportLayerNodeHandle<Identifier>,RawMessage>
Parameters:
callback - the callback for incoming sockets/messages

setErrorHandler

public void setErrorHandler(ErrorHandler<TransportLayerNodeHandle<Identifier>> handler)
Description copied from interface: TransportLayer
To be notified of problems not related to an outgoing messaage/socket. Or to be notified if a callback isn't provided.

Specified by:
setErrorHandler in interface TransportLayer<TransportLayerNodeHandle<Identifier>,RawMessage>
Parameters:
handler - to be notified of problems not related to a specific messaage/socket.

destroy

public void destroy()
Specified by:
destroy in interface Destructable

addLivenessListener

public void addLivenessListener(LivenessListener<TransportLayerNodeHandle<Identifier>> name)
Specified by:
addLivenessListener in interface LivenessProvider<TransportLayerNodeHandle<Identifier>>

removeLivenessListener

public boolean removeLivenessListener(LivenessListener<TransportLayerNodeHandle<Identifier>> name)
Specified by:
removeLivenessListener in interface LivenessProvider<TransportLayerNodeHandle<Identifier>>

getLiveness

public int getLiveness(TransportLayerNodeHandle<Identifier> i,
                       java.util.Map<java.lang.String,java.lang.Integer> options)
Specified by:
getLiveness in interface LivenessProvider<TransportLayerNodeHandle<Identifier>>

livenessChanged

public void livenessChanged(Identifier i,
                            int val)
Description copied from interface: LivenessListener
Called when the liveness changes.

Specified by:
livenessChanged in interface LivenessListener<Identifier>

addProximityListener

public void addProximityListener(ProximityListener<TransportLayerNodeHandle<Identifier>> name)
Specified by:
addProximityListener in interface ProximityProvider<TransportLayerNodeHandle<Identifier>>

removeProximityListener

public boolean removeProximityListener(ProximityListener<TransportLayerNodeHandle<Identifier>> name)
Specified by:
removeProximityListener in interface ProximityProvider<TransportLayerNodeHandle<Identifier>>

proximity

public int proximity(TransportLayerNodeHandle<Identifier> i)
Specified by:
proximity in interface ProximityProvider<TransportLayerNodeHandle<Identifier>>

proximityChanged

public void proximityChanged(Identifier i,
                             int newProx,
                             java.util.Map<java.lang.String,java.lang.Integer> options)
Specified by:
proximityChanged in interface ProximityListener<Identifier>

checkLiveness

public boolean checkLiveness(TransportLayerNodeHandle<Identifier> i,
                             java.util.Map<java.lang.String,java.lang.Integer> options)
Description copied from interface: LivenessProvider
Returns wether a new notification will occur. Will return false if a liveness check has recently completed. Will return true if a new liveness check starts, or an existing one is in progress.

Specified by:
checkLiveness in interface LivenessProvider<TransportLayerNodeHandle<Identifier>>
Parameters:
i - the node to check
Returns:
true if there will be an update (either a ping, or a change in liveness) false if there won't be an update due to bandwidth concernts

openSocket

public SocketRequestHandle<TransportLayerNodeHandle<Identifier>> openSocket(TransportLayerNodeHandle<Identifier> i,
                                                                            SocketCallback<TransportLayerNodeHandle<Identifier>> deliverSocketToMe,
                                                                            java.util.Map<java.lang.String,java.lang.Integer> options)
Description copied from interface: TransportLayer
Open a socket to the Identifier

Specified by:
openSocket in interface TransportLayer<TransportLayerNodeHandle<Identifier>,RawMessage>
Parameters:
i - who to open the socket to
deliverSocketToMe - the callback when the socket is opened
options - options on how to open the socket (don't source route, encrypt etc) (may not be respected if layer cannot provide service)
Returns:
an object to cancel opening the socket if it takes to long, or is no longer relevent

incomingSocket

public void incomingSocket(P2PSocket<Identifier> s)
                    throws java.io.IOException
Description copied from interface: TransportLayerCallback
Notification of a new socket.

Specified by:
incomingSocket in interface TransportLayerCallback<Identifier,java.nio.ByteBuffer>
Parameters:
s - the incoming socket
Throws:
java.io.IOException

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection