Interface IChannel

All Superinterfaces:
org.eclipse.net4j.util.collection.Closeable, IBufferHandler, ILocationAware, org.eclipse.net4j.util.event.INotifier, org.eclipse.net4j.util.security.IUserAware
All Known Subinterfaces:
IJVMChannel, InternalChannel
All Known Implementing Classes:
Channel

public interface IChannel extends ILocationAware, org.eclipse.net4j.util.security.IUserAware, IBufferHandler, org.eclipse.net4j.util.event.INotifier, org.eclipse.net4j.util.collection.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.

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);
   }
 });
 
Author:
Eike Stepper
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

    Nested classes/interfaces inherited from interface org.eclipse.net4j.util.event.INotifier

    org.eclipse.net4j.util.event.INotifier.INotifier2
  • Method Summary

    Modifier and Type
    Method
    Description
    short
    Returns the ID of this channel.
    Returns the multiplexer this channel is associated with.
    long
    Returns the number of buffers that are received from the multiplexer of this channel and are passed on to the receive handler of this channel.
    long
    Returns the number of bytes that are received from the multiplexer of this channel and are passed on to the receive handler of this channel.
    Returns the IBufferHandler that handles buffers received from the peer channel.
    long
    Returns the number of buffers that are sent to the multiplexer of this channel.
    long
    Returns the number of bytes that are sent to the multiplexer of this channel.
    void
    Asynchronously sends the given buffer to the receive handler of the peer channel.
    void
    Sets the IBufferHandler to handle buffers received from the peer channel.

    Methods inherited from interface org.eclipse.net4j.util.collection.Closeable

    close, isClosed

    Methods inherited from interface org.eclipse.net4j.buffer.IBufferHandler

    handleBuffer

    Methods inherited from interface org.eclipse.net4j.ILocationAware

    getLocation, isClient, isServer

    Methods inherited from interface org.eclipse.net4j.util.event.INotifier

    addListener, getListeners, hasListeners, removeListener

    Methods inherited from interface org.eclipse.net4j.util.security.IUserAware

    getUserID
  • Method Details

    • 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.
    • getSentBuffers

      long getSentBuffers()
      Returns the number of buffers that are sent to the multiplexer of this channel.
      Since:
      4.10
    • getSentBytes

      long getSentBytes()
      Returns the number of bytes that are sent to the multiplexer of this channel.
      Since:
      4.13
    • getReceivedBuffers

      long getReceivedBuffers()
      Returns the number of buffers that are received from the multiplexer of this channel and are passed on to the receive handler of this channel.
      Since:
      4.10
    • getReceivedBytes

      long getReceivedBytes()
      Returns the number of bytes that are received from the multiplexer of this channel and are passed on to the receive handler of this channel.
      Since:
      4.13