Class ObservableSegmentDecorator<DECORATEE extends org.refcodes.serial.Segment>

java.lang.Object
org.refcodes.serial.ext.observer.ObservableSegmentDecorator<DECORATEE>
Type Parameters:
DECORATEE - The type of the observed decoratee in question.
All Implemented Interfaces:
Serializable, org.refcodes.mixin.DecorateeAccessor<DECORATEE>, org.refcodes.mixin.LengthAccessor, org.refcodes.observer.Observable<TransmissionObserver<DECORATEE>>, org.refcodes.serial.DecoratorSegment<DECORATEE>, ObservableSegment<DECORATEE>, ObservableTransmission<DECORATEE>, org.refcodes.serial.Segment, org.refcodes.serial.Transmission

public class ObservableSegmentDecorator<DECORATEE extends org.refcodes.serial.Segment>
extends Object
implements ObservableSegment<DECORATEE>, org.refcodes.serial.DecoratorSegment<DECORATEE>
The ObservableSegment class enriches a Segment decoratee with observer functionality as of the ObservableSegment interface. In case the decoratee was updated as of receiveFrom(InputStream, OutputStream) or Segment.fromTransmission(Sequence) or the like, a TransmissionEvent is fired.
See Also:
Serialized Form
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.refcodes.mixin.DecorateeAccessor

    org.refcodes.mixin.DecorateeAccessor.DecorateeBuilder<DECORATEE extends Object,​B extends org.refcodes.mixin.DecorateeAccessor.DecorateeBuilder<DECORATEE,​B>>, org.refcodes.mixin.DecorateeAccessor.DecorateeMutator<DECORATEE extends Object>, org.refcodes.mixin.DecorateeAccessor.DecorateeProperty<DECORATEE extends Object>

    Nested classes/interfaces inherited from interface org.refcodes.mixin.LengthAccessor

    org.refcodes.mixin.LengthAccessor.LengthBuilder<B extends org.refcodes.mixin.LengthAccessor.LengthBuilder<B>>, org.refcodes.mixin.LengthAccessor.LengthMutator, org.refcodes.mixin.LengthAccessor.LengthProperty

    Nested classes/interfaces inherited from interface org.refcodes.serial.Segment

    org.refcodes.serial.Segment.SegmentMixin

    Nested classes/interfaces inherited from interface org.refcodes.serial.Transmission

    org.refcodes.serial.Transmission.TransmissionMixin
  • Constructor Summary

    Constructors
    Constructor Description
    ObservableSegmentDecorator​(DECORATEE aDecoratee)
    Constructs a ObservableSegment wrapping the given Segment decoratee and using a default ExecutorService and dispatching events in sequentially (as of ExecutionStrategy.SEQUENTIAL).
    ObservableSegmentDecorator​(DECORATEE aDecoratee, ExecutorService aExecutorService, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
    Constructs a ObservableSegment wrapping the given Segment decoratee and using the provided ExecutorService when dispatching events in parallel (as of ExecutionStrategy.PARALLEL and ExecutionStrategy.JOIN) and using the given ExecutionStrategy when dispatching the events.
    ObservableSegmentDecorator​(DECORATEE aDecoratee, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
    Constructs a ObservableSegment wrapping the given Segment decoratee and using the provided ExecutionStrategy when dispatching the events.
  • Method Summary

    Modifier and Type Method Description
    int fromTransmission​(org.refcodes.serial.Sequence aSequence, int aOffset)
    DECORATEE getDecoratee()
    int getLength()
    boolean hasObserverSubscription​(TransmissionObserver<DECORATEE> aObserver)
    void receiveFrom​(InputStream aInputStream, OutputStream aReturnStream)
    boolean subscribeObserver​(TransmissionObserver<DECORATEE> aObserver)
    org.refcodes.serial.Schema toSchema()
    org.refcodes.struct.SimpleTypeMap toSimpleTypeMap()
    org.refcodes.serial.Sequence toTransmission()
    void transmitTo​(OutputStream aOutputStream, InputStream aReturnStream)
    boolean unsubscribeObserver​(TransmissionObserver<DECORATEE> aObserver)

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.refcodes.serial.Segment

    fromTransmission, fromTransmission, fromTransmission, receiveFrom, receiveFrom

    Methods inherited from interface org.refcodes.serial.Transmission

    transmitTo, transmitTo
  • Constructor Details

    • ObservableSegmentDecorator

      public ObservableSegmentDecorator​(DECORATEE aDecoratee)
      Constructs a ObservableSegment wrapping the given Segment decoratee and using a default ExecutorService and dispatching events in sequentially (as of ExecutionStrategy.SEQUENTIAL).
      Parameters:
      aDecoratee - The decoratee to be wrapped by the observable decorator.
    • ObservableSegmentDecorator

      public ObservableSegmentDecorator​(DECORATEE aDecoratee, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
      Constructs a ObservableSegment wrapping the given Segment decoratee and using the provided ExecutionStrategy when dispatching the events.
      Parameters:
      aDecoratee - The decoratee to be wrapped by the observable decorator.
      aExecutionStrategy - the execution strategy to use when dispatching events.
    • ObservableSegmentDecorator

      public ObservableSegmentDecorator​(DECORATEE aDecoratee, ExecutorService aExecutorService, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
      Constructs a ObservableSegment wrapping the given Segment decoratee and using the provided ExecutorService when dispatching events in parallel (as of ExecutionStrategy.PARALLEL and ExecutionStrategy.JOIN) and using the given ExecutionStrategy when dispatching the events.
      Parameters:
      aDecoratee - The decoratee to be wrapped by the observable decorator.
      aExecutorService - the executor service to use when dispatching events.
      aExecutionStrategy - the execution strategy to use when dispatching events.
  • Method Details

    • fromTransmission

      public int fromTransmission​(org.refcodes.serial.Sequence aSequence, int aOffset) throws org.refcodes.serial.TransmissionException
      Specified by:
      fromTransmission in interface org.refcodes.serial.Segment
      Throws:
      org.refcodes.serial.TransmissionException
    • receiveFrom

      public void receiveFrom​(InputStream aInputStream, OutputStream aReturnStream) throws IOException, org.refcodes.serial.TransmissionException
      Specified by:
      receiveFrom in interface org.refcodes.serial.Segment
      Throws:
      IOException
      org.refcodes.serial.TransmissionException
    • getLength

      public int getLength()
      Specified by:
      getLength in interface org.refcodes.mixin.LengthAccessor
      Specified by:
      getLength in interface org.refcodes.serial.Transmission
    • toTransmission

      public org.refcodes.serial.Sequence toTransmission()
      Specified by:
      toTransmission in interface org.refcodes.serial.Transmission
    • transmitTo

      public void transmitTo​(OutputStream aOutputStream, InputStream aReturnStream) throws IOException
      Specified by:
      transmitTo in interface org.refcodes.serial.Transmission
      Throws:
      IOException
    • toSchema

      public org.refcodes.serial.Schema toSchema()
      Specified by:
      toSchema in interface org.refcodes.serial.Transmission
    • toSimpleTypeMap

      public org.refcodes.struct.SimpleTypeMap toSimpleTypeMap()
      Specified by:
      toSimpleTypeMap in interface org.refcodes.serial.Transmission
    • getDecoratee

      public DECORATEE getDecoratee()
      Specified by:
      getDecoratee in interface org.refcodes.mixin.DecorateeAccessor<DECORATEE extends org.refcodes.serial.Segment>
    • hasObserverSubscription

      public boolean hasObserverSubscription​(TransmissionObserver<DECORATEE> aObserver)
      Specified by:
      hasObserverSubscription in interface org.refcodes.observer.Observable<DECORATEE extends org.refcodes.serial.Segment>
    • subscribeObserver

      public boolean subscribeObserver​(TransmissionObserver<DECORATEE> aObserver)
      Specified by:
      subscribeObserver in interface org.refcodes.observer.Observable<DECORATEE extends org.refcodes.serial.Segment>
    • unsubscribeObserver

      public boolean unsubscribeObserver​(TransmissionObserver<DECORATEE> aObserver)
      Specified by:
      unsubscribeObserver in interface org.refcodes.observer.Observable<DECORATEE extends org.refcodes.serial.Segment>