- java.lang.Object
-
- swim.streamlet.AbstractStreamlet<I,O>
-
- All Implemented Interfaces:
GenericStreamlet<I,O>
,Streamlet<I,O>
,StreamletScope<O>
public abstract class AbstractStreamlet<I,O> extends Object implements GenericStreamlet<I,O>
-
-
Field Summary
Fields Modifier and Type Field Description protected StreamletContext
context
protected StreamletScope<? extends O>
scope
protected int
version
-
Constructor Summary
Constructors Constructor Description AbstractStreamlet()
AbstractStreamlet(StreamletScope<? extends O> scope)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
bindInput(String key, Outlet<? extends I> input)
Connects theInlet
of thisStreamlet
, identified by the givenkey
, to theinput
from which theInlet
should acquire its state.void
decohere()
Marks thisStreamlet
—and all of its outlets—as having inconsistent state.static <I,O>
voiddecohereOutlets(Streamlet<I,O> streamlet, Class<?> streamletClass)
protected void
didDecohere()
void
didDecohereInlet(Inlet<? extends I> inlet)
void
didDecohereOutlet(Outlet<? super O> outlet)
protected void
didRecohere(int version)
void
didRecohereInlet(Inlet<? extends I> inlet, int version)
void
didRecohereOutlet(Outlet<? super O> outlet, int version)
void
disconnectInputs()
Disconnects allInlet
s dominated by thisStreamlet
in the dataflow dependency graph.static <I,O>
voiddisconnectInputs(Streamlet<I,O> streamlet, Class<?> streamletClass)
void
disconnectOutputs()
Disconnects allInlets
s dominated by thisStreamlet
in the dataflow graph.static <I,O>
voiddisconnectOutputs(Streamlet<I,O> streamlet, Class<?> streamletClass)
<I2 extends I>
I2getInput(String key)
<I2 extends I>
I2getInput(String key, I2 orElse)
<I2 extends I>
I2getInput(Inlet<I2> inlet)
<I2 extends I>
I2getInput(Inlet<I2> inlet, I2 orElse)
O
getOutput(String key)
O
getOutput(Outlet<? super O> outlet)
protected <I2 extends I>
Inlet<I2>inlet()
Inlet<I>
inlet(String key)
Returns theInlet
to thisStreamlet
identified by the givenkey
; returnsnull
if thisStreamlet
has no suchInlet
.protected <I2 extends I,O2>
Inoutlet<I2,O2>inoutlet()
protected void
onDecohere()
protected void
onDecohereOutlets()
protected void
onRecohere(int version)
protected void
onRecohereInlets(int version)
protected void
onRecohereOutlets(int version)
protected <O2> Outlet<O2>
outlet()
Outlet<O>
outlet(String key)
Returns theOutlet
of thisStreamlet
identified by the givenkey
; returnsnull
if thisStreamlet
has no suchOutlet
.void
recohere(int version)
Updates the state of thisStreamlet
to make it consistent with the targetversion
.static <I,O>
voidrecohereInlets(int version, Streamlet<I,O> streamlet, Class<?> streamletClass)
static <I,O>
voidrecohereOutlets(int version, Streamlet<I,O> streamlet, Class<?> streamletClass)
static <I,O>
intreflectInletCount(Class<?> streamletClass)
static <I,O>
Inlet<I>reflectInletField(Streamlet<I,O> streamlet, Field field)
static <I,O>
Map.Entry<String,Inlet<I>>reflectInletIndex(int index, Streamlet<I,O> streamlet, Class<?> streamletClass)
static <I,O>
Inlet<I>reflectInletKey(String key, Streamlet<I,O> streamlet, Class<?> streamletClass)
static <I,O>
Inoutlet<I,O>reflectInoutletField(Streamlet<I,O> streamlet, Field field)
static <I,O>
intreflectOutletCount(Class<?> streamletClass)
static <I,O>
Outlet<O>reflectOutletField(Streamlet<I,O> streamlet, Field field)
static <I,O>
Map.Entry<String,Outlet<O>>reflectOutletIndex(int index, Streamlet<I,O> streamlet, Class<?> streamletClass)
static <I,O>
Outlet<O>reflectOutletKey(String key, Streamlet<I,O> streamlet, Class<?> streamletClass)
void
setStreamletContext(StreamletContext context)
Sets the environment in which thisStreamlet
operates.void
setStreamletScope(StreamletScope<? extends O> scope)
Sets the lexically scoped parent of thisStreamlet
.StreamletContext
streamletContext()
Returns the environment in which thisStreamlet
operates.StreamletScope<? extends O>
streamletScope()
Returns the lexically scoped parent of thisStreamlet
.void
unbindInput(String key)
Disconnects theInlet
of thisStreamlet
, identified by the givenkey
, from itsinput
Outlet
, if connected.protected void
willDecohere()
void
willDecohereInlet(Inlet<? extends I> inlet)
void
willDecohereOutlet(Outlet<? super O> outlet)
protected void
willRecohere(int version)
void
willRecohereInlet(Inlet<? extends I> inlet, int version)
void
willRecohereOutlet(Outlet<? super O> outlet, int version)
-
-
-
Field Detail
-
scope
protected StreamletScope<? extends O> scope
-
context
protected StreamletContext context
-
version
protected int version
-
-
Constructor Detail
-
AbstractStreamlet
public AbstractStreamlet(StreamletScope<? extends O> scope)
-
AbstractStreamlet
public AbstractStreamlet()
-
-
Method Detail
-
streamletScope
public StreamletScope<? extends O> streamletScope()
Description copied from interface:Streamlet
Returns the lexically scoped parent of thisStreamlet
. Returnsnull
if thisStreamlet
has no lexical parent.- Specified by:
streamletScope
in interfaceStreamlet<I,O>
- Specified by:
streamletScope
in interfaceStreamletScope<I>
-
setStreamletScope
public void setStreamletScope(StreamletScope<? extends O> scope)
Description copied from interface:Streamlet
Sets the lexically scoped parent of thisStreamlet
.- Specified by:
setStreamletScope
in interfaceStreamlet<I,O>
-
streamletContext
public StreamletContext streamletContext()
Description copied from interface:Streamlet
Returns the environment in which thisStreamlet
operates.- Specified by:
streamletContext
in interfaceStreamlet<I,O>
- Specified by:
streamletContext
in interfaceStreamletScope<I>
-
setStreamletContext
public void setStreamletContext(StreamletContext context)
Description copied from interface:Streamlet
Sets the environment in which thisStreamlet
operates.- Specified by:
setStreamletContext
in interfaceStreamlet<I,O>
-
inlet
public Inlet<I> inlet(String key)
Description copied from interface:Streamlet
Returns theInlet
to thisStreamlet
identified by the givenkey
; returnsnull
if thisStreamlet
has no suchInlet
.
-
bindInput
public void bindInput(String key, Outlet<? extends I> input)
Description copied from interface:Streamlet
Connects theInlet
of thisStreamlet
, identified by the givenkey
, to theinput
from which theInlet
should acquire its state. Delegates toInlet.bindInput(Outlet)
on the identifiedInlet
.
-
unbindInput
public void unbindInput(String key)
Description copied from interface:Streamlet
Disconnects theInlet
of thisStreamlet
, identified by the givenkey
, from itsinput
Outlet
, if connected. Delegates toInlet.unbindInput()
on the identifiedInlet
.- Specified by:
unbindInput
in interfaceStreamlet<I,O>
-
outlet
public Outlet<O> outlet(String key)
Description copied from interface:Streamlet
Returns theOutlet
of thisStreamlet
identified by the givenkey
; returnsnull
if thisStreamlet
has no suchOutlet
.
-
outlet
protected <O2> Outlet<O2> outlet()
-
decohere
public void decohere()
Description copied from interface:Streamlet
Marks thisStreamlet
—and all of its outlets—as having inconsistent state. Decohering aStreamlet
will recursively decohere all streamlets that transitively depend on the state of thisStreamlet
. Decohering aStreamlet
does not cause its state to be recomputed. A subsequentStreamlet.recohere(int)
call will eventually make the state of theStreamlet
coherent again.
-
recohere
public void recohere(int version)
Description copied from interface:Streamlet
Updates the state of thisStreamlet
to make it consistent with the targetversion
. TheStreamlet
only needs to update if its currentversion
differs from the targetversion
. To update its state, theStreamlet
first invokesInlet.recohereOutput(int)
on each of its inlets, to ensure that its input states are coherent. It then recomputes its own state in an implementation defined manner. Finally, it invokesOutlet.recohereInput(int)
on its outlets, causing all transitively dependent streamlets to make their own states coherent again.
-
getOutput
public O getOutput(Outlet<? super O> outlet)
- Specified by:
getOutput
in interfaceGenericStreamlet<I,O>
-
disconnectInputs
public void disconnectInputs()
Description copied from interface:Streamlet
Disconnects allInlet
s dominated by thisStreamlet
in the dataflow dependency graph. Used to recursively clean up chains of combinators terminating at thisStreamlet
.- Specified by:
disconnectInputs
in interfaceStreamlet<I,O>
-
disconnectOutputs
public void disconnectOutputs()
Description copied from interface:Streamlet
Disconnects allInlets
s dominated by thisStreamlet
in the dataflow graph. Used to recursively clean up chains of combinators originating from thisStreamlet
.- Specified by:
disconnectOutputs
in interfaceStreamlet<I,O>
-
willDecohereInlet
public void willDecohereInlet(Inlet<? extends I> inlet)
- Specified by:
willDecohereInlet
in interfaceGenericStreamlet<I,O>
-
didDecohereInlet
public void didDecohereInlet(Inlet<? extends I> inlet)
- Specified by:
didDecohereInlet
in interfaceGenericStreamlet<I,O>
-
willRecohereInlet
public void willRecohereInlet(Inlet<? extends I> inlet, int version)
- Specified by:
willRecohereInlet
in interfaceGenericStreamlet<I,O>
-
didRecohereInlet
public void didRecohereInlet(Inlet<? extends I> inlet, int version)
- Specified by:
didRecohereInlet
in interfaceGenericStreamlet<I,O>
-
willDecohereOutlet
public void willDecohereOutlet(Outlet<? super O> outlet)
- Specified by:
willDecohereOutlet
in interfaceGenericStreamlet<I,O>
-
didDecohereOutlet
public void didDecohereOutlet(Outlet<? super O> outlet)
- Specified by:
didDecohereOutlet
in interfaceGenericStreamlet<I,O>
-
willRecohereOutlet
public void willRecohereOutlet(Outlet<? super O> outlet, int version)
- Specified by:
willRecohereOutlet
in interfaceGenericStreamlet<I,O>
-
didRecohereOutlet
public void didRecohereOutlet(Outlet<? super O> outlet, int version)
- Specified by:
didRecohereOutlet
in interfaceGenericStreamlet<I,O>
-
willDecohere
protected void willDecohere()
-
onDecohere
protected void onDecohere()
-
onDecohereOutlets
protected void onDecohereOutlets()
-
didDecohere
protected void didDecohere()
-
willRecohere
protected void willRecohere(int version)
-
onRecohereInlets
protected void onRecohereInlets(int version)
-
onRecohere
protected void onRecohere(int version)
-
onRecohereOutlets
protected void onRecohereOutlets(int version)
-
didRecohere
protected void didRecohere(int version)
-
disconnectInputs
public static <I,O> void disconnectInputs(Streamlet<I,O> streamlet, Class<?> streamletClass)
-
disconnectOutputs
public static <I,O> void disconnectOutputs(Streamlet<I,O> streamlet, Class<?> streamletClass)
-
decohereOutlets
public static <I,O> void decohereOutlets(Streamlet<I,O> streamlet, Class<?> streamletClass)
-
recohereInlets
public static <I,O> void recohereInlets(int version, Streamlet<I,O> streamlet, Class<?> streamletClass)
-
recohereOutlets
public static <I,O> void recohereOutlets(int version, Streamlet<I,O> streamlet, Class<?> streamletClass)
-
reflectInletCount
public static <I,O> int reflectInletCount(Class<?> streamletClass)
-
reflectOutletCount
public static <I,O> int reflectOutletCount(Class<?> streamletClass)
-
reflectInletIndex
public static <I,O> Map.Entry<String,Inlet<I>> reflectInletIndex(int index, Streamlet<I,O> streamlet, Class<?> streamletClass)
-
reflectOutletIndex
public static <I,O> Map.Entry<String,Outlet<O>> reflectOutletIndex(int index, Streamlet<I,O> streamlet, Class<?> streamletClass)
-
reflectInletKey
public static <I,O> Inlet<I> reflectInletKey(String key, Streamlet<I,O> streamlet, Class<?> streamletClass)
-
reflectOutletKey
public static <I,O> Outlet<O> reflectOutletKey(String key, Streamlet<I,O> streamlet, Class<?> streamletClass)
-
reflectInletField
public static <I,O> Inlet<I> reflectInletField(Streamlet<I,O> streamlet, Field field)
-
reflectOutletField
public static <I,O> Outlet<O> reflectOutletField(Streamlet<I,O> streamlet, Field field)
-
-