Class QuoteServer

java.lang.Object
org.jgroups.demos.QuoteServer
All Implemented Interfaces:
MembershipListener, MessageListener

public class QuoteServer extends Object implements MembershipListener, MessageListener
Example of a replicated quote server. The server maintains state which consists of a list of quotes and their corresponding values. When it is started, it tries to reach other quote servers to get its initial state. If it does not receive any response after 5 seconds, it assumes it is the first server and starts processing requests.

Any updates are multicast across the cluster

Author:
Bela Ban
  • Constructor Details

    • QuoteServer

      public QuoteServer()
  • Method Details

    • viewAccepted

      public void viewAccepted(View new_view)
      Description copied from interface: MembershipListener
      Called when a change in membership has occurred. No long running actions or sending of messages 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 Channel.connect(String) returns.

      Specified by:
      viewAccepted in interface MembershipListener
    • suspect

      public void suspect(Address suspected_mbr)
      Description copied from interface: MembershipListener
      Called whenever a member is suspected of having crashed, but has not yet been excluded.
      Specified by:
      suspect in interface MembershipListener
    • block

      public void block()
      Description copied from interface: MembershipListener
      Called (usually by the FLUSH protocol), as an indication that the member should stop sending messages. Any messages sent after returning from this callback might get blocked by the FLUSH protocol. When the FLUSH protocol is done, and messages can be sent again, the FLUSH protocol will simply unblock all pending messages. If a callback for unblocking is desired, implement ExtendedMembershipListener.unblock(). Note that block() is the equivalent of reception of a BlockEvent in the pull mode.
      Specified by:
      block in interface MembershipListener
    • start

      public void start()
    • getQuote

      public float getQuote(String stock_name) throws Exception
      Throws:
      Exception
    • setQuote

      public void setQuote(String stock_name, Float value)
    • getAllStocks

      public Hashtable getAllStocks()
    • printAllStocks

      public void printAllStocks()
    • receive

      public void receive(Message msg)
      Description copied from interface: MessageListener
      Called when a message is received.
      Specified by:
      receive in interface MessageListener
      Parameters:
      msg -
    • getState

      public byte[] getState()
      Description copied from interface: MessageListener
      Answers the group state; e.g., when joining.
      Specified by:
      getState in interface MessageListener
      Returns:
      byte[]
    • setState

      public void setState(byte[] state)
      Description copied from interface: MessageListener
      Sets the group state; e.g., when joining.
      Specified by:
      setState in interface MessageListener
      Parameters:
      state -
    • main

      public static void main(String[] args)