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

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

public class CommonAPITransportLayerImpl<Identifier extends NodeHandle>
extends Object
implements CommonAPITransportLayer<Identifier>, TransportLayerCallback<Identifier,ByteBuffer>


Field Summary
protected  boolean destroyed
           
static String MSG_ADDR
           
static String MSG_CLASS
           
static String MSG_STRING
           
static String MSG_TYPE
           
protected  OptionsAdder optionsAdder
           
 
Constructor Summary
CommonAPITransportLayerImpl(TransportLayer<Identifier,ByteBuffer> tl, IdFactory idFactory, RawMessageDeserializer deserializer, OptionsAdder optionsAdder, ErrorHandler<Identifier> errorHandler, Environment env)
           
 
Method Summary
 void acceptMessages(boolean b)
          Toggle accepting incoming messages.
 void acceptSockets(boolean b)
          Toggle accepting new sockets.
 void destroy()
           
 Identifier getLocalIdentifier()
          The local node.
 void incomingSocket(P2PSocket<Identifier> s)
          Notification of a new socket.
 void messageReceived(Identifier i, ByteBuffer m, Map<String,Object> options)
          Called when a new message is received.
 SocketRequestHandle<Identifier> openSocket(Identifier i, SocketCallback<Identifier> deliverSocketToMe, Map<String,Object> options)
          Open a socket to the Identifier
 MessageRequestHandle<Identifier,RawMessage> sendMessage(Identifier i, RawMessage m, MessageCallback<Identifier,RawMessage> deliverAckToMe, Map<String,Object> options)
          Send the message to the identifier
 void setCallback(TransportLayerCallback<Identifier,RawMessage> callback)
          Set the callback for incoming sockets/messages
 void setErrorHandler(ErrorHandler<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
 

Field Detail

MSG_CLASS

public static final String MSG_CLASS
See Also:
Constant Field Values

MSG_STRING

public static final String MSG_STRING
See Also:
Constant Field Values

MSG_TYPE

public static final String MSG_TYPE
See Also:
Constant Field Values

MSG_ADDR

public static final String MSG_ADDR
See Also:
Constant Field Values

optionsAdder

protected OptionsAdder optionsAdder

destroyed

protected boolean destroyed
Constructor Detail

CommonAPITransportLayerImpl

public CommonAPITransportLayerImpl(TransportLayer<Identifier,ByteBuffer> tl,
                                   IdFactory idFactory,
                                   RawMessageDeserializer deserializer,
                                   OptionsAdder optionsAdder,
                                   ErrorHandler<Identifier> errorHandler,
                                   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<Identifier extends NodeHandle,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<Identifier extends NodeHandle,RawMessage>

getLocalIdentifier

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

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

sendMessage

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

Specified by:
sendMessage in interface TransportLayer<Identifier extends NodeHandle,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 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,
                            ByteBuffer m,
                            Map<String,Object> options)
                     throws IOException
Description copied from interface: TransportLayerCallback
Called when a new message is received.

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

setCallback

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

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

setErrorHandler

public void setErrorHandler(ErrorHandler<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<Identifier extends NodeHandle,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

openSocket

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

Specified by:
openSocket in interface TransportLayer<Identifier extends NodeHandle,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 relevant

incomingSocket

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

Specified by:
incomingSocket in interface TransportLayerCallback<Identifier extends NodeHandle,ByteBuffer>
Parameters:
s - the incoming socket
Throws:
IOException


Copyright © 2010. All Rights Reserved.