Package org.graphstream.stream.binary
Class ByteProxy
java.lang.Object
org.graphstream.stream.SourceBase
org.graphstream.stream.binary.ByteProxy
- All Implemented Interfaces:
Runnable,AttributeSink,ElementSink,Pipe,Sink,Source
public class ByteProxy extends SourceBase implements Pipe, Runnable
This class is a proxy that can exchange event binary-encoded (opposed to
text-encoder) with another proxy.
It can be either a server that will listen to connections, or a client that
will connect to a server. The
ByteFactory passed to the constructor
will define the encoder and decoder of binary data.
Proxy can run on its own thread, just by calling the
start() method. It can be manually used with the
poll() method that process available
SelectionKey.- Since:
- 31/01/16.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classByteProxy.ModeDefines the mode of this proy, server or client.Nested classes/interfaces inherited from class org.graphstream.stream.SourceBase
SourceBase.ElementType -
Field Summary
Fields Modifier and Type Field Description InetAddressaddressThe address the proxy is bound to.ByteProxy.ModemodeProxy mode.intportThe port listened or connected to. -
Constructor Summary
Constructors Constructor Description ByteProxy(ByteFactory factory, int port)Create a new ByteProxy, in server mode, which will be bound to a local address and the given port.ByteProxy(ByteFactory factory, ByteProxy.Mode mode, InetAddress address, int port)Complete constructor of the proxy. -
Method Summary
Modifier and Type Method Description voidedgeAdded(String sourceId, long timeId, String edgeId, String fromNodeId, String toNodeId, boolean directed)An edge was inserted in graph.voidedgeAttributeAdded(String sourceId, long timeId, String edgeId, String attribute, Object value)A edge attribute was added.voidedgeAttributeChanged(String sourceId, long timeId, String edgeId, String attribute, Object oldValue, Object newValue)A edge attribute was changed.voidedgeAttributeRemoved(String sourceId, long timeId, String edgeId, String attribute)A edge attribute was removed.voidedgeRemoved(String sourceId, long timeId, String edgeId)An edge of graph was removed.The nodes the edge connects may already have been removed from the graph.voidgraphAttributeAdded(String sourceId, long timeId, String attribute, Object value)A graph attribute was added.voidgraphAttributeChanged(String sourceId, long timeId, String attribute, Object oldValue, Object newValue)A graph attribute was changed.voidgraphAttributeRemoved(String sourceId, long timeId, String attribute)A graph attribute was removed.voidgraphCleared(String sourceId, long timeId)The whole graph was cleared.voidnodeAdded(String sourceId, long timeId, String nodeId)A node was inserted in the given graph.voidnodeAttributeAdded(String sourceId, long timeId, String nodeId, String attribute, Object value)A node attribute was added.voidnodeAttributeChanged(String sourceId, long timeId, String nodeId, String attribute, Object oldValue, Object newValue)A node attribute was changed.voidnodeAttributeRemoved(String sourceId, long timeId, String nodeId, String attribute)A node attribute was removed.voidnodeRemoved(String sourceId, long timeId, String nodeId)A node was removed from the graph.voidpoll()Same as callingpoll(boolean)with blocking flag set to true.voidpoll(boolean blocking)Wait until one or several chunks of message are acceptable.voidrun()voidsetReplayable(Replayable replayable)Set the stream that can be replayed on a new connection.voidstart()Starts the proxy worker.voidstepBegins(String sourceId, long timeId, double step)Since dynamic graphs are based on discrete event modifications, the notion of step is defined to simulate elapsed time between events.voidstop()Stops the proxy worker, if running, and wait the end of the worker thread.Methods inherited from class org.graphstream.stream.SourceBase
addAttributeSink, addElementSink, addSink, attributeSinks, clearAttributeSinks, clearElementSinks, clearSinks, elementSinks, removeAttributeSink, removeElementSink, removeSink, sendAttributeChangedEvent, sendAttributeChangedEvent, sendEdgeAdded, sendEdgeAdded, sendEdgeAttributeAdded, sendEdgeAttributeAdded, sendEdgeAttributeChanged, sendEdgeAttributeChanged, sendEdgeAttributeRemoved, sendEdgeAttributeRemoved, sendEdgeRemoved, sendEdgeRemoved, sendGraphAttributeAdded, sendGraphAttributeAdded, sendGraphAttributeChanged, sendGraphAttributeChanged, sendGraphAttributeRemoved, sendGraphAttributeRemoved, sendGraphCleared, sendGraphCleared, sendNodeAdded, sendNodeAdded, sendNodeAttributeAdded, sendNodeAttributeAdded, sendNodeAttributeChanged, sendNodeAttributeChanged, sendNodeAttributeRemoved, sendNodeAttributeRemoved, sendNodeRemoved, sendNodeRemoved, sendStepBegins, sendStepBeginsMethods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.graphstream.stream.Source
addAttributeSink, addElementSink, addSink, clearAttributeSinks, clearElementSinks, clearSinks, removeAttributeSink, removeElementSink, removeSink
-
Field Details
-
Constructor Details
-
ByteProxy
Create a new ByteProxy, in server mode, which will be bound to a local address and the given port.- Parameters:
factory- the factory to create encoder and decoderport- port to bind the server to- Throws:
IOException- if troubles occurred while connecting the socket
-
ByteProxy
public ByteProxy(ByteFactory factory, ByteProxy.Mode mode, InetAddress address, int port) throws IOExceptionComplete constructor of the proxy.- Parameters:
factory- the factory to create encoder and decodermode- mode of the proxyaddress- address to listen or to connect toport- port to listen or to connect to- Throws:
IOException- if troubles occurred while connecting the socket
-
-
Method Details
-
setReplayable
Set the stream that can be replayed on a new connection.- Parameters:
replayable- the stream to replay, or null if nothing has to be replayed.
-
start
public void start()Starts the proxy worker. -
stop
Stops the proxy worker, if running, and wait the end of the worker thread.- Throws:
InterruptedException- if an interruption occurred while waiting for the end of the worker thread.
-
run
public void run() -
poll
public void poll()Same as callingpoll(boolean)with blocking flag set to true. -
poll
public void poll(boolean blocking)Wait until one or several chunks of message are acceptable. This method should be called in a loop. It can be used to block a program until some data is available.- Parameters:
blocking- flag true if method has to wait for some keys to be ready. If false, just process the available keys.
-
graphAttributeAdded
Description copied from interface:AttributeSinkA graph attribute was added.- Specified by:
graphAttributeAddedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the attribute changed.attribute- The attribute name.value- The attribute new value.
-
graphAttributeChanged
public void graphAttributeChanged(String sourceId, long timeId, String attribute, Object oldValue, Object newValue)Description copied from interface:AttributeSinkA graph attribute was changed.- Specified by:
graphAttributeChangedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the attribute changed.attribute- The attribute name.oldValue- The attribute old value.newValue- The attribute new value.
-
graphAttributeRemoved
Description copied from interface:AttributeSinkA graph attribute was removed.- Specified by:
graphAttributeRemovedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the attribute was removed.attribute- The removed attribute name.
-
nodeAttributeAdded
public void nodeAttributeAdded(String sourceId, long timeId, String nodeId, String attribute, Object value)Description copied from interface:AttributeSinkA node attribute was added.- Specified by:
nodeAttributeAddedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the change occurred.nodeId- Identifier of the node whose attribute changed.attribute- The attribute name.value- The attribute new value.
-
nodeAttributeChanged
public void nodeAttributeChanged(String sourceId, long timeId, String nodeId, String attribute, Object oldValue, Object newValue)Description copied from interface:AttributeSinkA node attribute was changed.- Specified by:
nodeAttributeChangedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the change occurred.nodeId- Identifier of the node whose attribute changed.attribute- The attribute name.oldValue- The attribute old value.newValue- The attribute new value.
-
nodeAttributeRemoved
Description copied from interface:AttributeSinkA node attribute was removed.- Specified by:
nodeAttributeRemovedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the attribute was removed.nodeId- Identifier of the node whose attribute was removed.attribute- The removed attribute name.
-
edgeAttributeAdded
public void edgeAttributeAdded(String sourceId, long timeId, String edgeId, String attribute, Object value)Description copied from interface:AttributeSinkA edge attribute was added.- Specified by:
edgeAttributeAddedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the change occurred.edgeId- Identifier of the edge whose attribute changed.attribute- The attribute name.value- The attribute new value.
-
edgeAttributeChanged
public void edgeAttributeChanged(String sourceId, long timeId, String edgeId, String attribute, Object oldValue, Object newValue)Description copied from interface:AttributeSinkA edge attribute was changed.- Specified by:
edgeAttributeChangedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the change occurred.edgeId- Identifier of the edge whose attribute changed.attribute- The attribute name.oldValue- The attribute old value.newValue- The attribute new value.
-
edgeAttributeRemoved
Description copied from interface:AttributeSinkA edge attribute was removed.- Specified by:
edgeAttributeRemovedin interfaceAttributeSink- Parameters:
sourceId- Identifier of the graph where the attribute was removed.edgeId- Identifier of the edge whose attribute was removed.attribute- The removed attribute name.
-
nodeAdded
Description copied from interface:ElementSinkA node was inserted in the given graph.- Specified by:
nodeAddedin interfaceElementSink- Parameters:
sourceId- Identifier of the graph where the node was added.nodeId- Identifier of the added node.
-
nodeRemoved
Description copied from interface:ElementSinkA node was removed from the graph.- Specified by:
nodeRemovedin interfaceElementSink- Parameters:
sourceId- Identifier of the graph where the node will be removed.nodeId- Identifier of the removed node.
-
edgeAdded
public void edgeAdded(String sourceId, long timeId, String edgeId, String fromNodeId, String toNodeId, boolean directed)Description copied from interface:ElementSinkAn edge was inserted in graph.- Specified by:
edgeAddedin interfaceElementSink- Parameters:
sourceId- Identifier of the graph where the edge was added.edgeId- Identifier of the added edge.fromNodeId- Identifier of the first node of the edge.toNodeId- Identifier of the second node of the edge.directed- If true, the edge is directed.
-
edgeRemoved
Description copied from interface:ElementSinkAn edge of graph was removed.The nodes the edge connects may already have been removed from the graph.- Specified by:
edgeRemovedin interfaceElementSink- Parameters:
sourceId- The graph where the edge will be removed.edgeId- The edge that will be removed.
-
graphCleared
Description copied from interface:ElementSinkThe whole graph was cleared. All the nodes, edges and attributes of the graph are removed.- Specified by:
graphClearedin interfaceElementSink- Parameters:
sourceId- The graph cleared.
-
stepBegins
Description copied from interface:ElementSinkSince dynamic graphs are based on discrete event modifications, the notion of step is defined to simulate elapsed time between events. So a step is a event that occurs in the graph, it does not modify it but it gives a kind of timestamp that allow the tracking of the progress of the graph over the time.
This kind of event is useful for dynamic algorithms that listen to the dynamic graph and need to measure the time in the graph's evolution.
- Specified by:
stepBeginsin interfaceElementSink- Parameters:
sourceId- Identifier of the graph where the step starts.timeId- A numerical value that may give a timestamp to track the evolution of the graph over the time.
-