org.eclipse.net4j.channel
Interface IChannel

All Superinterfaces:
Closeable, IBufferHandler, ILocationAware, INotifier, IUserAware
All Known Subinterfaces:
IJVMChannel, InternalChannel
All Known Implementing Classes:
Channel

public interface IChannel
extends ILocationAware, IUserAware, IBufferHandler, INotifier, Closeable

A bidirectional communications channel for the asynchronous exchange of buffers. A channel is lightweight and virtual in the sense that it does not necessarily represent a single physical connection like a TCP socket connection. The underlying physical connection is represented by a channel multiplexer.

Class Diagram:

An example for opening a channel on an IConnector and sending an IBuffer:

 // Open a channel
 IChannel channel = connector.openChannel();
 short channelID = channel.getIndex();
 
 // Fill a buffer
 Buffer buffer = bufferProvider.getBuffer();
 ByteBuffer byteBuffer = buffer.startPutting(channelID);
 byteBuffer.putDouble(15.47);
 
 // Let the channel send the buffer without blocking
 channel.sendBuffer(buffer);
 

An example for receiving IBuffers from channels on an IConnector:

 // Create a receive handler
 final IBufferHandler receiveHandler = new IBufferHandler()
 {
   public void handleBuffer(IBuffer buffer)
   {
     ByteBuffer byteBuffer = buffer.getByteBuffer();
     IOUtil.OUT().println("Received " + byteBuffer.getDouble());
     buffer.release();
   }
 };
 
 // Set the receive handler to all new channels
 connector.addListener(new ContainerEventAdapter()
 {
   protected void onAdded(IContainer container, Object element)
   {
     IChannel channel = (IChannel)element;
     channel.setReceiveHandler(receiveHandler);
   }
 });
 

No Implement
This interface is not intended to be implemented by clients.
No Extend
This interface is not intended to be extended by clients.

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.eclipse.net4j.ILocationAware
ILocationAware.Location
 
Method Summary
 short getID()
          Returns the ID of this channel.
 IChannelMultiplexer getMultiplexer()
          Returns the multiplexer this channel is associated with.
 IBufferHandler getReceiveHandler()
          Returns the IBufferHandler that handles buffers received from the peer channel.
 void sendBuffer(IBuffer buffer)
          Asynchronously sends the given buffer to the receive handler of the peer channel.
 void setReceiveHandler(IBufferHandler receiveHandler)
          Sets the IBufferHandler to handle buffers received from the peer channel.
 
Methods inherited from interface org.eclipse.net4j.ILocationAware
getLocation, isClient, isServer
 
Methods inherited from interface org.eclipse.net4j.util.security.IUserAware
getUserID
 
Methods inherited from interface org.eclipse.net4j.buffer.IBufferHandler
handleBuffer
 
Methods inherited from interface org.eclipse.net4j.util.event.INotifier
addListener, getListeners, hasListeners, removeListener
 
Methods inherited from interface org.eclipse.net4j.util.collection.Closeable
close, isClosed
 

Method Detail

getID

short getID()
Returns the ID of this channel. The ID is unique at any time among all channels of the associated multiplexer.

Since:
2.0

getMultiplexer

IChannelMultiplexer getMultiplexer()
Returns the multiplexer this channel is associated with. This channel multiplexer can be used, for example, to open additional channels that will be multiplexed through the same transport medium.

Since:
2.0

sendBuffer

void sendBuffer(IBuffer buffer)
Asynchronously sends the given buffer to the receive handler of the peer channel.


getReceiveHandler

IBufferHandler getReceiveHandler()
Returns the IBufferHandler that handles buffers received from the peer channel.


setReceiveHandler

void setReceiveHandler(IBufferHandler receiveHandler)
Sets the IBufferHandler to handle buffers received from the peer channel.



Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.