/** * Stores given value (value + timestamp) under the given state. It assigns a preceding element * relation to the previous entry. * * @param stateName name of the state that the event should be assigned to * @param eventId unique id of event assigned by this SharedBuffer * @param previousNodeId id of previous entry (might be null if start of new run) * @param version Version of the previous relation * @return assigned id of this element */ public NodeId put( final String stateName, final EventId eventId, @Nullable final NodeId previousNodeId, final DeweyNumber version) { if (previousNodeId != null) { lockNode(previousNodeId); } NodeId currentNodeId = new NodeId(eventId, getOriginalNameFromInternal(stateName)); Lockable<SharedBufferNode> currentNode = sharedBuffer.getEntry(currentNodeId); if (currentNode == null) { currentNode = new Lockable<>(new SharedBufferNode(), 0); lockEvent(eventId); } currentNode.getElement().addEdge(new SharedBufferEdge( previousNodeId, version)); sharedBuffer.upsertEntry(currentNodeId, currentNode); return currentNodeId; }
for (SharedBufferEdge edge : currentEntry.f1.getEdges()) {
@Override public SharedBufferNode createInstance() { return new SharedBufferNode(new ArrayList<>()); }
@Override public SharedBufferNode deserialize(DataInputView source) throws IOException { List<SharedBufferEdge> edges = edgesSerializer.deserialize(source); return new SharedBufferNode(edges); }
int refCount = source.readInt(); entries.add(Tuple2.of(nodeId, new Lockable<>(new SharedBufferNode(), refCount))); mappingContext.put(Tuple2.of((String) stateName, wrapper), nodeId); Tuple2<NodeId, Lockable<SharedBufferNode>> targetEntry = targetIdx < 0 ? Tuple2.of(null, null) : entries.get(targetIdx); sourceEntry.f1.getElement().addEdge(new SharedBufferEdge(targetEntry.f0, version)); if (version.length() == 1) { starters.put(version.getRun(), sourceEntry.f0.getEventId());
@Override public SharedBufferNode copy(SharedBufferNode from) { return new SharedBufferNode(edgesSerializer.copy(from.edges)); }
/** * Removes the {@code SharedBufferNode}, when the ref is decreased to zero, and also * decrease the ref of the edge on this node. * * @param node id of the entry * @param sharedBufferNode the node body to be removed * @throws Exception Thrown if the system cannot access the state. */ private void removeNode(NodeId node, SharedBufferNode sharedBufferNode) throws Exception { sharedBuffer.removeEntry(node); EventId eventId = node.getEventId(); releaseEvent(eventId); for (SharedBufferEdge sharedBufferEdge : sharedBufferNode.getEdges()) { releaseNode(sharedBufferEdge.getTarget()); } }
/** * Stores given value (value + timestamp) under the given state. It assigns a preceding element * relation to the previous entry. * * @param stateName name of the state that the event should be assigned to * @param eventId unique id of event assigned by this SharedBuffer * @param previousNodeId id of previous entry (might be null if start of new run) * @param version Version of the previous relation * @return assigned id of this element */ public NodeId put( final String stateName, final EventId eventId, @Nullable final NodeId previousNodeId, final DeweyNumber version) { if (previousNodeId != null) { lockNode(previousNodeId); } NodeId currentNodeId = new NodeId(eventId, getOriginalNameFromInternal(stateName)); Lockable<SharedBufferNode> currentNode = sharedBuffer.getEntry(currentNodeId); if (currentNode == null) { currentNode = new Lockable<>(new SharedBufferNode(), 0); lockEvent(eventId); } currentNode.getElement().addEdge(new SharedBufferEdge( previousNodeId, version)); sharedBuffer.upsertEntry(currentNodeId, currentNode); return currentNodeId; }
@Override public SharedBufferNode createInstance() { return new SharedBufferNode(new ArrayList<>()); }
for (SharedBufferEdge edge : currentEntry.f1.getEdges()) {
/** * Stores given value (value + timestamp) under the given state. It assigns a preceding element * relation to the previous entry. * * @param stateName name of the state that the event should be assigned to * @param eventId unique id of event assigned by this SharedBuffer * @param previousNodeId id of previous entry (might be null if start of new run) * @param version Version of the previous relation * @return assigned id of this element */ public NodeId put( final String stateName, final EventId eventId, @Nullable final NodeId previousNodeId, final DeweyNumber version) { if (previousNodeId != null) { lockNode(previousNodeId); } NodeId currentNodeId = new NodeId(eventId, getOriginalNameFromInternal(stateName)); Lockable<SharedBufferNode> currentNode = sharedBuffer.getEntry(currentNodeId); if (currentNode == null) { currentNode = new Lockable<>(new SharedBufferNode(), 0); lockEvent(eventId); } currentNode.getElement().addEdge(new SharedBufferEdge( previousNodeId, version)); sharedBuffer.upsertEntry(currentNodeId, currentNode); return currentNodeId; }
@Override public SharedBufferNode createInstance() { return new SharedBufferNode(new ArrayList<>()); }
for (SharedBufferEdge edge : currentEntry.f1.getEdges()) {
int refCount = source.readInt(); entries.add(Tuple2.of(nodeId, new Lockable<>(new SharedBufferNode(), refCount))); mappingContext.put(Tuple2.of((String) stateName, wrapper), nodeId); Tuple2<NodeId, Lockable<SharedBufferNode>> targetEntry = targetIdx < 0 ? Tuple2.of(null, null) : entries.get(targetIdx); sourceEntry.f1.getElement().addEdge(new SharedBufferEdge(targetEntry.f0, version)); if (version.length() == 1) { starters.put(version.getRun(), sourceEntry.f0.getEventId());
@Override public SharedBufferNode copy(SharedBufferNode from) { return new SharedBufferNode(edgesSerializer.copy(from.edges)); }
/** * Removes the {@code SharedBufferNode}, when the ref is decreased to zero, and also * decrease the ref of the edge on this node. * * @param node id of the entry * @param sharedBufferNode the node body to be removed * @throws Exception Thrown if the system cannot access the state. */ private void removeNode(NodeId node, SharedBufferNode sharedBufferNode) throws Exception { sharedBuffer.removeEntry(node); EventId eventId = node.getEventId(); releaseEvent(eventId); for (SharedBufferEdge sharedBufferEdge : sharedBufferNode.getEdges()) { releaseNode(sharedBufferEdge.getTarget()); } }
int refCount = source.readInt(); entries.add(Tuple2.of(nodeId, new Lockable<>(new SharedBufferNode(), refCount))); mappingContext.put(Tuple2.of((String) stateName, wrapper), nodeId); Tuple2<NodeId, Lockable<SharedBufferNode>> targetEntry = targetIdx < 0 ? Tuple2.of(null, null) : entries.get(targetIdx); sourceEntry.f1.getElement().addEdge(new SharedBufferEdge(targetEntry.f0, version)); if (version.length() == 1) { starters.put(version.getRun(), sourceEntry.f0.getEventId());
@Override public SharedBufferNode deserialize(DataInputView source) throws IOException { List<SharedBufferEdge> edges = edgesSerializer.deserialize(source); return new SharedBufferNode(edges); }
/** * Removes the {@code SharedBufferNode}, when the ref is decreased to zero, and also * decrease the ref of the edge on this node. * * @param node id of the entry * @param sharedBufferNode the node body to be removed * @throws Exception Thrown if the system cannot access the state. */ private void removeNode(NodeId node, SharedBufferNode sharedBufferNode) throws Exception { sharedBuffer.removeEntry(node); EventId eventId = node.getEventId(); releaseEvent(eventId); for (SharedBufferEdge sharedBufferEdge : sharedBufferNode.getEdges()) { releaseNode(sharedBufferEdge.getTarget()); } }
@Override public SharedBufferNode deserialize(DataInputView source) throws IOException { List<SharedBufferEdge> edges = edgesSerializer.deserialize(source); return new SharedBufferNode(edges); }