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>>
TheObservablePayloadSegment
class enriches aPayloadSegment
decoratee with observer functionality as of theObservablePayloadSegment
interface. In case the decoratee was updated as ofreceiveFrom(InputStream, OutputStream)
orSegment.fromTransmission(Sequence)
or the like, aPayloadEvent
is fired. Attention: It is not fired upon callingsetPayload(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>
-
-
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
All Methods Instance Methods Concrete Methods 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.serial.Sequence
toSequence()
org.refcodes.struct.SimpleTypeMap
toSimpleTypeMap()
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
-
-
-
-
Constructor Detail
-
ObservablePayloadSegmentDecorator
public 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
).- 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 Detail
-
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
-
toSequence
public org.refcodes.serial.Sequence toSequence()
- Specified by:
toSequence
in interfaceorg.refcodes.serial.Transmission
-
transmitTo
public void transmitTo(OutputStream aOutputStream, InputStream aReturnStream) throws IOException
- 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
-
getPayload
public T getPayload()
- Specified by:
getPayload
in interfaceorg.refcodes.mixin.PayloadAccessor<T>
-
setPayload
public void setPayload(T aValue)
- Specified by:
setPayload
in interfaceorg.refcodes.mixin.PayloadAccessor.PayloadMutator<T>
-
getDecoratee
public org.refcodes.serial.PayloadSegment<T> getDecoratee()
- Specified by:
getDecoratee
in interfaceorg.refcodes.mixin.DecorateeAccessor<T>
-
getAlias
public String getAlias()
- Specified by:
getAlias
in interfaceorg.refcodes.mixin.AliasAccessor
-
hasObserverSubscription
public boolean hasObserverSubscription(PayloadObserver<T> aObserver)
- Specified by:
hasObserverSubscription
in interfaceorg.refcodes.observer.Observable<T>
-
subscribeObserver
public boolean subscribeObserver(PayloadObserver<T> aObserver)
- Specified by:
subscribeObserver
in interfaceorg.refcodes.observer.Observable<T>
-
unsubscribeObserver
public boolean unsubscribeObserver(PayloadObserver<T> aObserver)
- Specified by:
unsubscribeObserver
in interfaceorg.refcodes.observer.Observable<T>
-
-