Package org.refcodes.serial.ext.observer
Class ObservablePayloadSectionDecorator<T>
- java.lang.Object
-
- org.refcodes.serial.ext.observer.ObservablePayloadSectionDecorator<T>
-
- Type Parameters:
T
- The type of the payload.
- All Implemented Interfaces:
Serializable
,org.refcodes.mixin.AliasAccessor
,org.refcodes.mixin.DecorateeAccessor<org.refcodes.serial.PayloadSection<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.DecoratorSection<org.refcodes.serial.PayloadSection<T>>
,ObservablePayloadSection<T>
,ObservablePayloadTransmission<T>
,org.refcodes.serial.PayloadSection<T>
,org.refcodes.serial.PayloadTransmission<T>
,org.refcodes.serial.Section
,org.refcodes.serial.Transmission
public class ObservablePayloadSectionDecorator<T> extends Object implements ObservablePayloadSection<T>, org.refcodes.serial.DecoratorSection<org.refcodes.serial.PayloadSection<T>>
TheObservablePayloadSection
class enriches aPayloadSection
decoratee with observer functionality as of theObservablePayloadSection
interface. In case the decoratee was updated as ofreceiveFrom(InputStream, int, OutputStream)
orSection.fromTransmission(Sequence, int)
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 ObservablePayloadSectionDecorator(org.refcodes.serial.PayloadSection<T> aDecoratee)
Constructs aObservablePayloadSection
wrapping the givenPayloadSection
decoratee and using a defaultExecutorService
and dispatching events in sequentially (as ofExecutionStrategy.SEQUENTIAL
).ObservablePayloadSectionDecorator(org.refcodes.serial.PayloadSection<T> aDecoratee, ExecutorService aExecutorService, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
Constructs aObservablePayloadSection
wrapping the givenPayloadSection
decoratee and using the providedExecutorService
when dispatching events in parallel (as ofExecutionStrategy.PARALLEL
andExecutionStrategy.JOIN
) and using the givenExecutionStrategy
when dispatching the events.ObservablePayloadSectionDecorator(org.refcodes.serial.PayloadSection<T> aDecoratee, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
Constructs aObservablePayloadSection
wrapping the givenPayloadSection
decoratee and using the providedExecutionStrategy
when dispatching the events.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
fromTransmission(org.refcodes.serial.Sequence aSequence, int aOffset, int aLength)
String
getAlias()
org.refcodes.serial.PayloadSection<T>
getDecoratee()
int
getLength()
T
getPayload()
boolean
hasObserverSubscription(PayloadObserver<T> aObserver)
void
receiveFrom(InputStream aInputStream, int aOffset, 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
-
-
-
-
Constructor Detail
-
ObservablePayloadSectionDecorator
public ObservablePayloadSectionDecorator(org.refcodes.serial.PayloadSection<T> aDecoratee)
Constructs aObservablePayloadSection
wrapping the givenPayloadSection
decoratee and using a defaultExecutorService
and dispatching events in sequentially (as ofExecutionStrategy.SEQUENTIAL
).- Parameters:
aDecoratee
- The decoratee to be wrapped by the observable decorator.
-
ObservablePayloadSectionDecorator
public ObservablePayloadSectionDecorator(org.refcodes.serial.PayloadSection<T> aDecoratee, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
Constructs aObservablePayloadSection
wrapping the givenPayloadSection
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.
-
ObservablePayloadSectionDecorator
public ObservablePayloadSectionDecorator(org.refcodes.serial.PayloadSection<T> aDecoratee, ExecutorService aExecutorService, org.refcodes.controlflow.ExecutionStrategy aExecutionStrategy)
Constructs aObservablePayloadSection
wrapping the givenPayloadSection
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 void fromTransmission(org.refcodes.serial.Sequence aSequence, int aOffset, int aLength) throws org.refcodes.serial.TransmissionException
- Specified by:
fromTransmission
in interfaceorg.refcodes.serial.Section
- Throws:
org.refcodes.serial.TransmissionException
-
receiveFrom
public void receiveFrom(InputStream aInputStream, int aOffset, OutputStream aReturnStream) throws IOException, org.refcodes.serial.TransmissionException
- Specified by:
receiveFrom
in interfaceorg.refcodes.serial.Section
- 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
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.PayloadSection<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>
-
-