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

        long getSentBuffers()
        Returns the number of buffers that are sent to the multiplexer of this channel.
        Since:
        4.10
      • 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