Class ReplicatedTree

java.lang.Object
org.jgroups.blocks.ReplicatedTree
All Implemented Interfaces:
Receiver

public class ReplicatedTree extends Object implements Receiver
A tree-like structure that is replicated across several members. Updates will be multicast to all group members reliably and in the same order.
Author:
Bela Ban Jan 17 2002, Alfonso Olias-Sanz
  • Field Details

  • Constructor Details

    • ReplicatedTree

      public ReplicatedTree(String groupname, String props, long state_fetch_timeout) throws Exception
      Creates a channel with the given properties. Connects to the channel, then creates a PullPushAdapter and starts it
      Throws:
      Exception
    • ReplicatedTree

      public ReplicatedTree(String groupname, String props, long state_fetch_timeout, boolean jmx) throws Exception
      Throws:
      Exception
    • ReplicatedTree

      public ReplicatedTree()
    • ReplicatedTree

      public ReplicatedTree(JChannel channel) throws Exception
      Expects an already connected channel. Creates a PullPushAdapter and starts it
      Throws:
      Exception
  • Method Details

    • setRemoteCalls

      public void setRemoteCalls(boolean flag)
    • setRootNode

      public void setRootNode(ReplicatedTree.Node n)
    • getLocalAddress

      public Address getLocalAddress()
    • getMembers

      public List<Address> getMembers()
    • fetchState

      public void fetchState(long timeout) throws Exception
      Fetch the group state from the current coordinator. If successful, this will trigger setState().
      Throws:
      Exception
    • addReplicatedTreeListener

      public void addReplicatedTreeListener(ReplicatedTree.ReplicatedTreeListener listener)
    • removeReplicatedTreeListener

      public void removeReplicatedTreeListener(ReplicatedTree.ReplicatedTreeListener listener)
    • start

      public final void start() throws Exception
      Throws:
      Exception
    • stop

      public void stop()
    • put

      public void put(String fqn, HashMap data)
      Adds a new node to the tree and sets its data. If the node doesn not yet exist, it will be created. Also, parent nodes will be created if not existent. If the node already has data, then the new data will override the old one. If the node already existed, a nodeModified() notification will be generated. Otherwise a nodeCreated() motification will be emitted.
      Parameters:
      fqn - The fully qualified name of the new node
      data - The new data. May be null if no data should be set in the node.
    • put

      public void put(String fqn, String key, Object value)
      Adds a key and value to a given node. If the node doesn't exist, it will be created. If the node already existed, a nodeModified() notification will be generated. Otherwise a nodeCreated() motification will be emitted.
      Parameters:
      fqn - The fully qualified name of the node
      key - The key
      value - The value
    • remove

      public void remove(String fqn)
      Removes the node from the tree.
      Parameters:
      fqn - The fully qualified name of the node.
    • remove

      public void remove(String fqn, String key)
      Removes key from the node's hashmap
      Parameters:
      fqn - The fullly qualified name of the node
      key - The key to be removed
    • exists

      public boolean exists(String fqn)
      Checks whether a given node exists in the tree
      Parameters:
      fqn - The fully qualified name of the node
      Returns:
      boolean Whether or not the node exists
    • getKeys

      public Set getKeys(String fqn)
      Gets the keys of the data map. Returns all keys as Strings. Returns null if node does not exist.
      Parameters:
      fqn - The fully qualified name of the node
      Returns:
      Set A set of keys (as Strings)
    • get

      public Object get(String fqn, String key)
      Finds a node given its name and returns the value associated with a given key in its data map. Returns null if the node was not found in the tree or the key was not found in the hashmap.
      Parameters:
      fqn - The fully qualified name of the node.
      key - The key.
    • print

      public String print(String fqn)
      Prints a representation of the node defined by fqn. Output includes name, fqn and data.
    • getChildrenNames

      public Set getChildrenNames(String fqn)
      Returns all children of a given node
      Parameters:
      fqn - The fully qualified name of the node
      Returns:
      Set A list of child names (as Strings)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getGroupName

      public String getGroupName()
      Returns the name of the group that the DistributedTree is connected to
      Returns:
      String
    • getChannel

      public JChannel getChannel()
      Returns the Channel the DistributedTree is connected to
      Returns:
      Channel
    • getGroupMembersNumber

      public int getGroupMembersNumber()
      Returns the number of current members joined to the group
      Returns:
      int
    • _put

      public void _put(String fqn, HashMap data)
    • _put

      public void _put(String fqn, String key, Object value)
    • _remove

      public void _remove(String fqn)
    • _remove

      public void _remove(String fqn, String key)
    • _removeData

      public void _removeData(String fqn)
    • receive

      public void receive(Message msg)
      Callback. Process the contents of the message; typically an _add() or _set() request
      Specified by:
      receive in interface Receiver
      Parameters:
      msg - The message
    • getState

      public void getState(OutputStream ostream) throws Exception
      Description copied from interface: Receiver
      Allows an application to write the state to an OutputStream. After the state has been written, the OutputStream doesn't need to be closed as stream closing is automatically done when a calling thread returns from this callback.
      Specified by:
      getState in interface Receiver
      Parameters:
      ostream - The OutputStream
      Throws:
      Exception - If the streaming fails, any exceptions should be thrown so that the state requester can re-throw them and let the caller know what happened
    • setState

      public void setState(InputStream istream) throws Exception
      Description copied from interface: Receiver
      Allows an application to read the state from an InputStream. After the state has been read, the InputStream doesn't need to be closed as stream closing is automatically done when a calling thread returns from this callback.
      Specified by:
      setState in interface Receiver
      Parameters:
      istream - The InputStream
      Throws:
      Exception - If the streaming fails, any exceptions should be thrown so that the state requester can catch them and thus know what happened
    • viewAccepted

      public void viewAccepted(View new_view)
      Description copied from interface: Receiver
      Called when a change in membership has occurred. No long running actions, sending of messages or anything that could block should be done in this callback. If some long running action needs to be performed, it should be done in a separate thread.
      Note that on reception of the first view (a new member just joined), the channel will not yet be in the connected state. This only happens when JChannel.connect(String) returns.
      Specified by:
      viewAccepted in interface Receiver
    • main

      public static void main(String[] args)