Rice Pastry API

org.mpisws.p2p.transport.sourceroute
Class SourceRouteTransportLayerImpl<Identifier>

java.lang.Object
  extended by org.mpisws.p2p.transport.sourceroute.SourceRouteTransportLayerImpl<Identifier>
All Implemented Interfaces:
SourceRouteTransportLayer<Identifier>, TransportLayer<SourceRoute<Identifier>,java.nio.ByteBuffer>, TransportLayerCallback<Identifier,java.nio.ByteBuffer>, Destructable

public class SourceRouteTransportLayerImpl<Identifier>
extends java.lang.Object
implements SourceRouteTransportLayer<Identifier>, TransportLayerCallback<Identifier,java.nio.ByteBuffer>

This layer can only send/receive messages from a SourceRoute and determine liveness. It does not manage current routes to nodes.

Author:
Jeff Hoye

Field Summary
 
Fields inherited from interface org.mpisws.p2p.transport.sourceroute.SourceRouteTransportLayer
ALLOW_SOURCE_ROUTE, DONT_SOURCE_ROUTE, OPTION_SOURCE_ROUTE
 
Constructor Summary
SourceRouteTransportLayerImpl(SourceRouteFactory<Identifier> srFactory, TransportLayer<Identifier,java.nio.ByteBuffer> etl, SourceRouteForwardStrategy<Identifier> fSRs, Environment env, ErrorHandler<SourceRoute<Identifier>> errorHandler)
           
 
Method Summary
 void acceptMessages(boolean b)
          Toggle accepting incoming messages.
 void acceptSockets(boolean b)
          Toggle accepting new sockets.
 void addSourceRouteTap(SourceRouteTap tap)
           
 void destroy()
           
 SourceRoute getLocalIdentifier()
          The local node.
 void incomingSocket(P2PSocket<Identifier> socka)
          Notification of a new socket.
protected  void incomingSocketHelper(P2PSocket<Identifier> socket, SourceRoute<Identifier> sr)
          To override this behavior if needed.
 void messageReceived(Identifier i, java.nio.ByteBuffer m, java.util.Map<java.lang.String,java.lang.Object> options)
          Called when a new message is received.
 SocketRequestHandle<SourceRoute<Identifier>> openSocket(SourceRoute<Identifier> i, SocketCallback<SourceRoute<Identifier>> deliverSocketToMe, java.util.Map<java.lang.String,java.lang.Object> options)
          Open a socket to the Identifier
protected  void openSocketHelper(SocketCallback<SourceRoute<Identifier>> deliverSocketToMe, SocketRequestHandleImpl<SourceRoute<Identifier>> handle, P2PSocket<Identifier> socket, SourceRoute<Identifier> i)
           
 boolean removeSourceRouteTap(SourceRouteTap tap)
           
 MessageRequestHandle<SourceRoute<Identifier>,java.nio.ByteBuffer> sendMessage(SourceRoute<Identifier> i, java.nio.ByteBuffer m, MessageCallback<SourceRoute<Identifier>,java.nio.ByteBuffer> deliverAckToMe, java.util.Map<java.lang.String,java.lang.Object> options)
          Send the message to the identifier
 void setCallback(TransportLayerCallback<SourceRoute<Identifier>,java.nio.ByteBuffer> callback)
          Set the callback for incoming sockets/messages
 void setErrorHandler(ErrorHandler<SourceRoute<Identifier>> errorHandler)
          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

SourceRouteTransportLayerImpl

public SourceRouteTransportLayerImpl(SourceRouteFactory<Identifier> srFactory,
                                     TransportLayer<Identifier,java.nio.ByteBuffer> etl,
                                     SourceRouteForwardStrategy<Identifier> fSRs,
                                     Environment env,
                                     ErrorHandler<SourceRoute<Identifier>> errorHandler)
Method Detail

openSocket

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

Specified by:
openSocket in interface TransportLayer<SourceRoute<Identifier>,java.nio.ByteBuffer>
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 relevant

openSocketHelper

protected void openSocketHelper(SocketCallback<SourceRoute<Identifier>> deliverSocketToMe,
                                SocketRequestHandleImpl<SourceRoute<Identifier>> handle,
                                P2PSocket<Identifier> socket,
                                SourceRoute<Identifier> i)

incomingSocketHelper

protected void incomingSocketHelper(P2PSocket<Identifier> socket,
                                    SourceRoute<Identifier> sr)
                             throws java.io.IOException
To override this behavior if needed.

Parameters:
socket -
sr -
Throws:
java.io.IOException

incomingSocket

public void incomingSocket(P2PSocket<Identifier> socka)
                    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:
socka - the incoming socket
Throws:
java.io.IOException

sendMessage

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

Specified by:
sendMessage in interface TransportLayer<SourceRoute<Identifier>,java.nio.ByteBuffer>
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 acknowledgment, 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 relevant

messageReceived

public void messageReceived(Identifier i,
                            java.nio.ByteBuffer m,
                            java.util.Map<java.lang.String,java.lang.Object> 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<SourceRoute<Identifier>,java.nio.ByteBuffer> callback)
Description copied from interface: TransportLayer
Set the callback for incoming sockets/messages

Specified by:
setCallback in interface TransportLayer<SourceRoute<Identifier>,java.nio.ByteBuffer>
Parameters:
callback - the callback for incoming sockets/messages

setErrorHandler

public void setErrorHandler(ErrorHandler<SourceRoute<Identifier>> errorHandler)
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<SourceRoute<Identifier>,java.nio.ByteBuffer>
Parameters:
errorHandler - to be notified of problems not related to a specific messaage/socket.

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<SourceRoute<Identifier>,java.nio.ByteBuffer>

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<SourceRoute<Identifier>,java.nio.ByteBuffer>

getLocalIdentifier

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

Specified by:
getLocalIdentifier in interface TransportLayer<SourceRoute<Identifier>,java.nio.ByteBuffer>
Returns:
The local node.

destroy

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

addSourceRouteTap

public void addSourceRouteTap(SourceRouteTap tap)
Specified by:
addSourceRouteTap in interface SourceRouteTransportLayer<Identifier>

removeSourceRouteTap

public boolean removeSourceRouteTap(SourceRouteTap tap)
Specified by:
removeSourceRouteTap in interface SourceRouteTransportLayer<Identifier>

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection