Rice Pastry API

org.mpisws.p2p.transport.wire
Class WireTransportLayerImpl

java.lang.Object
  extended by org.mpisws.p2p.transport.wire.WireTransportLayerImpl
All Implemented Interfaces:
TransportLayer<java.net.InetSocketAddress,java.nio.ByteBuffer>, SocketOpeningTransportLayer<java.net.InetSocketAddress>, WireTransportLayer, Destructable

public class WireTransportLayerImpl
extends java.lang.Object
implements WireTransportLayer, SocketOpeningTransportLayer<java.net.InetSocketAddress>


Field Summary
protected  java.net.InetSocketAddress bindAddress
           
protected  Environment environment
           
protected  ErrorHandler<java.net.InetSocketAddress> errorHandler
           
 boolean forceBindAddress
          true for modelnet, who needs to set the bind address even on outgoing sockets
protected  Logger logger
           
protected  TCPLayer tcp
           
protected  UDPLayer udp
           
 
Fields inherited from interface org.mpisws.p2p.transport.wire.WireTransportLayer
OPTION_TRANSPORT_TYPE, TRANSPORT_TYPE_DATAGRAM, TRANSPORT_TYPE_GUARANTEED
 
Constructor Summary
WireTransportLayerImpl(java.net.InetSocketAddress bindAddress, Environment env, ErrorHandler<java.net.InetSocketAddress> errorHandler)
           
WireTransportLayerImpl(java.net.InetSocketAddress bindAddress, Environment env, ErrorHandler<java.net.InetSocketAddress> errorHandler, boolean enableServer)
           
WireTransportLayerImpl(java.net.InetSocketAddress bindAddress, Environment env, ErrorHandler<java.net.InetSocketAddress> errorHandler, boolean enableTCPServer, boolean enableUDPServer)
           
 
Method Summary
 void acceptMessages(boolean b)
          Toggle accepting incoming messages.
 void acceptSockets(boolean b)
          Toggle accepting new sockets.
 void addSocketCountListener(SocketCountListener<java.net.InetSocketAddress> listener)
           
 void addTransportLayerListener(TransportLayerListener<java.net.InetSocketAddress> listener)
           
 void broadcastChannelClosed(java.net.InetSocketAddress addr, java.util.Map<java.lang.String,java.lang.Object> options)
           
 void broadcastChannelOpened(java.net.InetSocketAddress addr, java.util.Map<java.lang.String,java.lang.Object> options, boolean outgoing)
           
 void destroy()
           
 java.net.InetSocketAddress getLocalIdentifier()
          Notification methods
protected  java.lang.Iterable<SocketCountListener<java.net.InetSocketAddress>> getSlisteners()
           
protected  java.lang.Iterable<TransportLayerListener<java.net.InetSocketAddress>> getTLlisteners()
           
protected  void incomingSocket(P2PSocket<java.net.InetSocketAddress> sm)
           
 boolean isDestroyed()
           
protected  void messageReceived(java.net.InetSocketAddress address, java.nio.ByteBuffer buffer, java.util.Map<java.lang.String,java.lang.Object> options)
           
 SocketRequestHandle<java.net.InetSocketAddress> openSocket(java.net.InetSocketAddress destination, SocketCallback<java.net.InetSocketAddress> deliverSocketToMe, java.util.Map<java.lang.String,java.lang.Object> options)
          Open a socket to the Identifier
 void removeSocketCountListener(SocketCountListener<java.net.InetSocketAddress> listener)
           
 void removeTransportLayerListener(TransportLayerListener<java.net.InetSocketAddress> listener)
           
 MessageRequestHandle<java.net.InetSocketAddress,java.nio.ByteBuffer> sendMessage(java.net.InetSocketAddress destination, java.nio.ByteBuffer m, MessageCallback<java.net.InetSocketAddress,java.nio.ByteBuffer> deliverAckToMe, java.util.Map<java.lang.String,java.lang.Object> options)
          Send the message to the identifier
 void setCallback(TransportLayerCallback<java.net.InetSocketAddress,java.nio.ByteBuffer> callback)
          Set the callback for incoming sockets/messages
 void setErrorHandler(ErrorHandler<java.net.InetSocketAddress> 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

bindAddress

protected java.net.InetSocketAddress bindAddress

udp

protected UDPLayer udp

tcp

protected TCPLayer tcp

logger

protected Logger logger

environment

protected Environment environment

errorHandler

protected ErrorHandler<java.net.InetSocketAddress> errorHandler

forceBindAddress

public boolean forceBindAddress
true for modelnet, who needs to set the bind address even on outgoing sockets

Constructor Detail

WireTransportLayerImpl

public WireTransportLayerImpl(java.net.InetSocketAddress bindAddress,
                              Environment env,
                              ErrorHandler<java.net.InetSocketAddress> errorHandler)
                       throws java.io.IOException
Parameters:
bindAddress - the address to bind to, if it fails, it will throw an exception
env - will acquire the SelectorManager from the env
Throws:
java.io.IOException

WireTransportLayerImpl

public WireTransportLayerImpl(java.net.InetSocketAddress bindAddress,
                              Environment env,
                              ErrorHandler<java.net.InetSocketAddress> errorHandler,
                              boolean enableServer)
                       throws java.io.IOException
Throws:
java.io.IOException

WireTransportLayerImpl

public WireTransportLayerImpl(java.net.InetSocketAddress bindAddress,
                              Environment env,
                              ErrorHandler<java.net.InetSocketAddress> errorHandler,
                              boolean enableTCPServer,
                              boolean enableUDPServer)
                       throws java.io.IOException
Throws:
java.io.IOException
Method Detail

setCallback

public void setCallback(TransportLayerCallback<java.net.InetSocketAddress,java.nio.ByteBuffer> callback)
Description copied from interface: TransportLayer
Set the callback for incoming sockets/messages

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

openSocket

public SocketRequestHandle<java.net.InetSocketAddress> openSocket(java.net.InetSocketAddress destination,
                                                                  SocketCallback<java.net.InetSocketAddress> 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<java.net.InetSocketAddress,java.nio.ByteBuffer>
Parameters:
destination - 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

sendMessage

public MessageRequestHandle<java.net.InetSocketAddress,java.nio.ByteBuffer> sendMessage(java.net.InetSocketAddress destination,
                                                                                        java.nio.ByteBuffer m,
                                                                                        MessageCallback<java.net.InetSocketAddress,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<java.net.InetSocketAddress,java.nio.ByteBuffer>
Parameters:
destination - 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

getLocalIdentifier

public java.net.InetSocketAddress getLocalIdentifier()
Notification methods

Specified by:
getLocalIdentifier in interface TransportLayer<java.net.InetSocketAddress,java.nio.ByteBuffer>
Parameters:
destination -
msg -
i -
data -
transport_type - WireTransportLayer.TRANSPORT_TYPE_DATAGRAM or WireTransportLayer.TRANSPORT_TYPE_GUARANTEED
Returns:
The local node.

destroy

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

isDestroyed

public boolean isDestroyed()

setErrorHandler

public void setErrorHandler(ErrorHandler<java.net.InetSocketAddress> 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<java.net.InetSocketAddress,java.nio.ByteBuffer>
Parameters:
handler - 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<java.net.InetSocketAddress,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<java.net.InetSocketAddress,java.nio.ByteBuffer>

messageReceived

protected void messageReceived(java.net.InetSocketAddress address,
                               java.nio.ByteBuffer buffer,
                               java.util.Map<java.lang.String,java.lang.Object> options)
                        throws java.io.IOException
Throws:
java.io.IOException

incomingSocket

protected void incomingSocket(P2PSocket<java.net.InetSocketAddress> sm)
                       throws java.io.IOException
Throws:
java.io.IOException

addTransportLayerListener

public void addTransportLayerListener(TransportLayerListener<java.net.InetSocketAddress> listener)

removeTransportLayerListener

public void removeTransportLayerListener(TransportLayerListener<java.net.InetSocketAddress> listener)

getTLlisteners

protected java.lang.Iterable<TransportLayerListener<java.net.InetSocketAddress>> getTLlisteners()

addSocketCountListener

public void addSocketCountListener(SocketCountListener<java.net.InetSocketAddress> listener)
Specified by:
addSocketCountListener in interface SocketOpeningTransportLayer<java.net.InetSocketAddress>

removeSocketCountListener

public void removeSocketCountListener(SocketCountListener<java.net.InetSocketAddress> listener)
Specified by:
removeSocketCountListener in interface SocketOpeningTransportLayer<java.net.InetSocketAddress>

getSlisteners

protected java.lang.Iterable<SocketCountListener<java.net.InetSocketAddress>> getSlisteners()

broadcastChannelOpened

public void broadcastChannelOpened(java.net.InetSocketAddress addr,
                                   java.util.Map<java.lang.String,java.lang.Object> options,
                                   boolean outgoing)

broadcastChannelClosed

public void broadcastChannelClosed(java.net.InetSocketAddress addr,
                                   java.util.Map<java.lang.String,java.lang.Object> options)

Rice Pastry API

Copyright © 2001-2005 - Rice Pastry.


Imprint-Dataprotection