Class DeserializerChannelProcessor

java.lang.Object
org.jtrim2.concurrent.query.io.DeserializerChannelProcessor
All Implemented Interfaces:
ChannelProcessor<Object,ReadableByteChannel>

public final class DeserializerChannelProcessor extends Object implements ChannelProcessor<Object,ReadableByteChannel>
Defines a ChannelProcessor which reads and deserializes the first object from the specified channel. This ChannelProcessor requires a ReadableByteChannel to read the bytes from. The object read from the channel will be forwarded to the specified AsyncDataListener.

Thread safety

As required by the ChannelProcessor, this class is safe to be accessed by multiple threads concurrently.

Synchronization transparency

Methods of this class are not synchronization transparent.
See Also:
  • Constructor Details

    • DeserializerChannelProcessor

      public DeserializerChannelProcessor()
      Creates a new DeserializerChannelProcessor which is ready to read the objects from the provided channel.
  • Method Details

    • processChannel

      public void processChannel(ReadableByteChannel channel, AsyncDataListener<Object> listener, ChannelProcessor.StateListener stateListener) throws IOException
      Processes the content of specified open channel and forwards the processed content to the specified AsyncDataListener. This method may or may not call the onDoneReceive method of the specified listener but if it does, it must honor the contract of the AsyncDataListener and stop forwarding anymore data.

      Implementation note: This method may read more bytes from the specified channel than necessary to read the first object.

      Specified by:
      processChannel in interface ChannelProcessor<Object,ReadableByteChannel>
      Parameters:
      channel - the channel whose content is to be processed and be forwarded to the specified listener. This channel may only be accessed in this method call and does not need to be closed in this method call. This argument cannot be null.
      listener - the listener to which processed data is to be forwarded. The data maybe forwarded only during this method call. The onDoneReceive method of this listener does not need to be called by this method but otherwise, this method must honor the contract of the listener. This argument cannot be null.
      stateListener - the StateListener through which this method call may show its current progress of processing the channel. This argument cannot be null.
      Throws:
      IOException - thrown if there was some error, while processing the channel. Throwing this exception, of course, means the termination of the data providing.