Package org.refcodes.serial.ext.observer
Class ObservablePayloadSegmentDecorator<T>
java.lang.Object
org.refcodes.serial.ext.observer.ObservablePayloadSegmentDecorator<T>
- Type Parameters:
T
- The type of the payload.
- All Implemented Interfaces:
Serializable
,org.refcodes.mixin.AliasAccessor
,org.refcodes.mixin.DecorateeAccessor<org.refcodes.serial.PayloadSegment<T>>
,org.refcodes.mixin.LengthAccessor
,org.refcodes.mixin.PayloadAccessor<T>
,org.refcodes.mixin.PayloadAccessor.PayloadBuilder<T,org.refcodes.serial.PayloadTransmission<T>>
,org.refcodes.mixin.PayloadAccessor.PayloadMutator<T>
,org.refcodes.mixin.PayloadAccessor.PayloadProperty<T>
,org.refcodes.observer.Observable<PayloadObserver<T>>
,org.refcodes.serial.DecoratorSegment<org.refcodes.serial.PayloadSegment<T>>
,ObservablePayloadSegment<T>
,ObservablePayloadTransmission<T>
,org.refcodes.serial.PayloadSegment<T>
,org.refcodes.serial.PayloadTransmission<T>
,org.refcodes.serial.Segment
,org.refcodes.serial.Transmission
public class ObservablePayloadSegmentDecorator<T> extends Object implements ObservablePayloadSegment<T>, org.refcodes.serial.DecoratorSegment<org.refcodes.serial.PayloadSegment<T>>
The
ObservablePayloadSegment
class enriches a PayloadSegment
decoratee with observer functionality as of the
ObservablePayloadSegment
interface. In case the decoratee was updated
as of receiveFrom(InputStream, OutputStream)
or
Segment.fromTransmission(Sequence)
or the like, a PayloadEvent
is
fired. Attention: It is not fired upon calling setPayload(Object)
!- See Also:
- Serialized Form
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.refcodes.mixin.AliasAccessor
org.refcodes.mixin.AliasAccessor.AliasBuilder<B extends org.refcodes.mixin.AliasAccessor.AliasBuilder<B>>, org.refcodes.mixin.AliasAccessor.AliasMutator, org.refcodes.mixin.AliasAccessor.AliasProperty
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.mixin.PayloadAccessor
org.refcodes.mixin.PayloadAccessor.PayloadBuilder<P extends Object,B extends org.refcodes.mixin.PayloadAccessor.PayloadBuilder<P,B>>, org.refcodes.mixin.PayloadAccessor.PayloadMutator<P extends Object>, org.refcodes.mixin.PayloadAccessor.PayloadProperty<P extends Object>
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 ObservablePayloadSegmentDecorator(org.refcodes.serial.PayloadSegment<T> aDecoratee)
Constructs aObservablePayloadSegment
wrapping the givenPayloadSegment
decoratee and using a defaultExecutorService
and dispatching events in sequentially (as ofExecutionStrategy.SEQUENTIAL
).ObservablePayloadSegmentDecorator(org.refcodes.serial.PayloadSegment<T> aDecoratee, ExecutorService aExecutorService, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
Constructs aObservablePayloadSegment
wrapping the givenPayloadSegment
decoratee and using the providedExecutorService
when dispatching events in parallel (as ofExecutionStrategy.PARALLEL
andExecutionStrategy.JOIN
) and using the givenExecutionStrategy
when dispatching the events.ObservablePayloadSegmentDecorator(org.refcodes.serial.PayloadSegment<T> aDecoratee, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
Constructs aObservablePayloadSegment
wrapping the givenPayloadSegment
decoratee and using the providedExecutionStrategy
when dispatching the events. -
Method Summary
Modifier and Type Method Description int
fromTransmission(org.refcodes.serial.Sequence aSequence, int aOffset)
String
getAlias()
org.refcodes.serial.PayloadSegment<T>
getDecoratee()
int
getLength()
T
getPayload()
boolean
hasObserverSubscription(PayloadObserver<T> aObserver)
void
receiveFrom(InputStream aInputStream, OutputStream aReturnStream)
void
setPayload(T aValue)
boolean
subscribeObserver(PayloadObserver<T> aObserver)
org.refcodes.serial.Schema
toSchema()
org.refcodes.struct.SimpleTypeMap
toSimpleTypeMap()
org.refcodes.serial.Sequence
toTransmission()
void
transmitTo(OutputStream aOutputStream, InputStream aReturnStream)
boolean
unsubscribeObserver(PayloadObserver<T> aObserver)
org.refcodes.serial.PayloadTransmission<T>
withPayload(T aValue)
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.refcodes.mixin.PayloadAccessor
getPayloadOr
Methods inherited from interface org.refcodes.mixin.PayloadAccessor.PayloadProperty
letPayload
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
-
ObservablePayloadSegmentDecorator
Constructs aObservablePayloadSegment
wrapping the givenPayloadSegment
decoratee and using a defaultExecutorService
and dispatching events in sequentially (as ofExecutionStrategy.SEQUENTIAL
).- Parameters:
aDecoratee
- The decoratee to be wrapped by the observable decorator.
-
ObservablePayloadSegmentDecorator
public ObservablePayloadSegmentDecorator(org.refcodes.serial.PayloadSegment<T> aDecoratee, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)Constructs aObservablePayloadSegment
wrapping the givenPayloadSegment
decoratee and using the providedExecutionStrategy
when dispatching the events.- Parameters:
aDecoratee
- The decoratee to be wrapped by the observable decorator.aExecutionStrategy
- the execution strategy to use when dispatching events.
-
ObservablePayloadSegmentDecorator
public ObservablePayloadSegmentDecorator(org.refcodes.serial.PayloadSegment<T> aDecoratee, ExecutorService aExecutorService, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)Constructs aObservablePayloadSegment
wrapping the givenPayloadSegment
decoratee and using the providedExecutorService
when dispatching events in parallel (as ofExecutionStrategy.PARALLEL
andExecutionStrategy.JOIN
) and using the givenExecutionStrategy
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 interfaceorg.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 interfaceorg.refcodes.serial.Segment
- Throws:
IOException
org.refcodes.serial.TransmissionException
-
getLength
public int getLength()- Specified by:
getLength
in interfaceorg.refcodes.mixin.LengthAccessor
- Specified by:
getLength
in interfaceorg.refcodes.serial.Transmission
-
toTransmission
public org.refcodes.serial.Sequence toTransmission()- Specified by:
toTransmission
in interfaceorg.refcodes.serial.Transmission
-
transmitTo
- Specified by:
transmitTo
in interfaceorg.refcodes.serial.Transmission
- Throws:
IOException
-
toSchema
public org.refcodes.serial.Schema toSchema()- Specified by:
toSchema
in interfaceorg.refcodes.serial.Transmission
-
toSimpleTypeMap
public org.refcodes.struct.SimpleTypeMap toSimpleTypeMap()- Specified by:
toSimpleTypeMap
in interfaceorg.refcodes.serial.Transmission
-
withPayload
-
getPayload
- Specified by:
getPayload
in interfaceorg.refcodes.mixin.PayloadAccessor<T>
-
setPayload
- Specified by:
setPayload
in interfaceorg.refcodes.mixin.PayloadAccessor.PayloadMutator<T>
-
getDecoratee
- Specified by:
getDecoratee
in interfaceorg.refcodes.mixin.DecorateeAccessor<T>
-
getAlias
- Specified by:
getAlias
in interfaceorg.refcodes.mixin.AliasAccessor
-
hasObserverSubscription
- Specified by:
hasObserverSubscription
in interfaceorg.refcodes.observer.Observable<T>
-
subscribeObserver
- Specified by:
subscribeObserver
in interfaceorg.refcodes.observer.Observable<T>
-
unsubscribeObserver
- Specified by:
unsubscribeObserver
in interfaceorg.refcodes.observer.Observable<T>
-