You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@edgent.apache.org by "Dale LaBossiere (JIRA)" <ji...@apache.org> on 2016/04/19 19:35:25 UTC
[jira] [Created] (QUARKS-150) add Valve Predicate
Dale LaBossiere created QUARKS-150:
--------------------------------------
Summary: add Valve Predicate
Key: QUARKS-150
URL: https://issues.apache.org/jira/browse/QUARKS-150
Project: Quarks
Issue Type: New Feature
Reporter: Dale LaBossiere
A Valve Predicate accepts tuples when its state is {@link State#OPEN}, otherwise it rejects tuples.
A valve is typically used to dynamically control whether or not
some downstream tuple processing is enabled. A decision to change the
state of the valve may be a result of local analytics or an external
device command.
[ fwiw, this is known as a 'Switch' utility operator in IBM Streams ]
Maybe this belongs in quarks.topology.plumbing/PlumbingStreams, not quarks.analytics.sensors/Filters like Deadband and Deadtime, since there's not really much "analytic" about it?
E.g., a Valve might be used to control whether or not logging of tuples is enabled.
```
TStream<JsonObject> stream = ...;
Valve<JsonObject> valve = new Valve<>(Valve.State.CLOSED);
stream.filter(valve).sink(someTupleLoggingConsumer);
// from some analytic or device command handler...
valve.setState(Valve.State.OPEN);
```
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)