Class SharedBufferAccessor<V>
- java.lang.Object
-
- org.apache.flink.cep.nfa.sharedbuffer.SharedBufferAccessor<V>
-
- All Implemented Interfaces:
AutoCloseable
public class SharedBufferAccessor<V> extends Object implements AutoCloseable
Accessor to SharedBuffer that allows operations on the underlying structures in batches. Operations are persisted only after closing the Accessor.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
advanceTime(long timestamp)
Notifies shared buffer that there will be no events with timestamp <&eq; the given value.void
close()
Persists the entry in the cache to the underlay state.List<Map<String,List<EventId>>>
extractPatterns(NodeId nodeId, DeweyNumber version)
Returns all elements from the previous relation starting at the given entry.void
lockNode(NodeId node, DeweyNumber version)
Increases the reference counter for the given entry so that it is not accidentally removed.Map<String,List<V>>
materializeMatch(Map<String,List<EventId>> match)
Extracts the real event from the sharedBuffer with pre-extracted eventId.NodeId
put(String stateName, EventId eventId, NodeId previousNodeId, DeweyNumber version)
Stores given value (value + timestamp) under the given state.EventId
registerEvent(V value, long timestamp)
Adds another unique event to the shared buffer and assigns a unique id for it.void
releaseEvent(EventId eventId)
Decreases the reference counter for the given event so that it can be removed once the reference counter reaches 0.void
releaseNode(NodeId node, DeweyNumber version)
Decreases the reference counter for the given entry so that it can be removed once the reference counter reaches 0.
-
-
-
Method Detail
-
advanceTime
public void advanceTime(long timestamp) throws Exception
Notifies shared buffer that there will be no events with timestamp <&eq; the given value. It allows to clear internal counters for number of events seen so far per timestamp.- Parameters:
timestamp
- watermark, no earlier events will arrive- Throws:
Exception
- Thrown if the system cannot access the state.
-
registerEvent
public EventId registerEvent(V value, long timestamp) throws Exception
Adds another unique event to the shared buffer and assigns a unique id for it. It automatically creates a lock on this event, so it won't be removed during processing of that event. Therefore the lock should be removed after processing allComputationState
sNOTE:Should be called only once for each unique event!
- Parameters:
value
- event to be registered- Returns:
- unique id of that event that should be used when putting entries to the buffer.
- Throws:
Exception
- Thrown if the system cannot access the state.
-
put
public NodeId put(String stateName, EventId eventId, @Nullable NodeId previousNodeId, DeweyNumber version)
Stores given value (value + timestamp) under the given state. It assigns a preceding element relation to the previous entry.- Parameters:
stateName
- name of the state that the event should be assigned toeventId
- unique id of event assigned by this SharedBufferpreviousNodeId
- id of previous entry (might be null if start of new run)version
- Version of the previous relation- Returns:
- assigned id of this element
-
extractPatterns
public List<Map<String,List<EventId>>> extractPatterns(NodeId nodeId, DeweyNumber version)
Returns all elements from the previous relation starting at the given entry.- Parameters:
nodeId
- id of the starting entryversion
- Version of the previous relation which shall be extracted- Returns:
- Collection of previous relations starting with the given value
-
materializeMatch
public Map<String,List<V>> materializeMatch(Map<String,List<EventId>> match)
Extracts the real event from the sharedBuffer with pre-extracted eventId.- Parameters:
match
- the matched event's eventId.- Returns:
- the event associated with the eventId.
-
lockNode
public void lockNode(NodeId node, DeweyNumber version)
Increases the reference counter for the given entry so that it is not accidentally removed.- Parameters:
node
- id of the entryversion
- dewey number of the (potential) edge that locks the given node
-
releaseNode
public void releaseNode(NodeId node, DeweyNumber version) throws Exception
Decreases the reference counter for the given entry so that it can be removed once the reference counter reaches 0.- Parameters:
node
- id of the entryversion
- dewey number of the (potential) edge that locked the given node- Throws:
Exception
- Thrown if the system cannot access the state.
-
releaseEvent
public void releaseEvent(EventId eventId) throws Exception
Decreases the reference counter for the given event so that it can be removed once the reference counter reaches 0.- Parameters:
eventId
- id of the event- Throws:
Exception
- Thrown if the system cannot access the state.
-
close
public void close() throws Exception
Persists the entry in the cache to the underlay state.- Specified by:
close
in interfaceAutoCloseable
- Throws:
Exception
- Thrown if the system cannot access the state.
-
-