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.
  • Field Details

    • mode

      public final ByteProxy.Mode mode
      Proxy mode.
    • address

      public final InetAddress address
      The address the proxy is bound to. If in server mode, this is the address where the server is listening to connections. If in client mode, this is the address where the proxy is connected to.
    • port

      public final int port
      The port listened or connected to.
  • Constructor Details

    • ByteProxy

      public ByteProxy​(ByteFactory factory, int port) throws IOException
      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 decoder
      port - 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 IOException
      Complete constructor of the proxy.
      Parameters:
      factory - the factory to create encoder and decoder
      mode - mode of the proxy
      address - address to listen or to connect to
      port - port to listen or to connect to
      Throws:
      IOException - if troubles occurred while connecting the socket
  • Method Details

    • setReplayable

      public void setReplayable​(Replayable replayable)
      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

      public void stop() throws InterruptedException
      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()
      Specified by:
      run in interface Runnable
    • poll

      public void poll()
      Same as calling poll(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

      public void graphAttributeAdded​(String sourceId, long timeId, String attribute, Object value)
      Description copied from interface: AttributeSink
      A graph attribute was added.
      Specified by:
      graphAttributeAdded in interface AttributeSink
      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: AttributeSink
      A graph attribute was changed.
      Specified by:
      graphAttributeChanged in interface AttributeSink
      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

      public void graphAttributeRemoved​(String sourceId, long timeId, String attribute)
      Description copied from interface: AttributeSink
      A graph attribute was removed.
      Specified by:
      graphAttributeRemoved in interface AttributeSink
      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: AttributeSink
      A node attribute was added.
      Specified by:
      nodeAttributeAdded in interface AttributeSink
      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: AttributeSink
      A node attribute was changed.
      Specified by:
      nodeAttributeChanged in interface AttributeSink
      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

      public void nodeAttributeRemoved​(String sourceId, long timeId, String nodeId, String attribute)
      Description copied from interface: AttributeSink
      A node attribute was removed.
      Specified by:
      nodeAttributeRemoved in interface AttributeSink
      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: AttributeSink
      A edge attribute was added.
      Specified by:
      edgeAttributeAdded in interface AttributeSink
      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: AttributeSink
      A edge attribute was changed.
      Specified by:
      edgeAttributeChanged in interface AttributeSink
      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

      public void edgeAttributeRemoved​(String sourceId, long timeId, String edgeId, String attribute)
      Description copied from interface: AttributeSink
      A edge attribute was removed.
      Specified by:
      edgeAttributeRemoved in interface AttributeSink
      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

      public void nodeAdded​(String sourceId, long timeId, String nodeId)
      Description copied from interface: ElementSink
      A node was inserted in the given graph.
      Specified by:
      nodeAdded in interface ElementSink
      Parameters:
      sourceId - Identifier of the graph where the node was added.
      nodeId - Identifier of the added node.
    • nodeRemoved

      public void nodeRemoved​(String sourceId, long timeId, String nodeId)
      Description copied from interface: ElementSink
      A node was removed from the graph.
      Specified by:
      nodeRemoved in interface ElementSink
      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: ElementSink
      An edge was inserted in graph.
      Specified by:
      edgeAdded in interface ElementSink
      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

      public void edgeRemoved​(String sourceId, long timeId, String edgeId)
      Description copied from interface: ElementSink
      An edge of graph was removed.The nodes the edge connects may already have been removed from the graph.
      Specified by:
      edgeRemoved in interface ElementSink
      Parameters:
      sourceId - The graph where the edge will be removed.
      edgeId - The edge that will be removed.
    • graphCleared

      public void graphCleared​(String sourceId, long timeId)
      Description copied from interface: ElementSink
      The whole graph was cleared. All the nodes, edges and attributes of the graph are removed.
      Specified by:
      graphCleared in interface ElementSink
      Parameters:
      sourceId - The graph cleared.
    • stepBegins

      public void stepBegins​(String sourceId, long timeId, double step)
      Description copied from interface: ElementSink

      Since 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:
      stepBegins in interface ElementSink
      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.