Class Calculator

  • All Implemented Interfaces:
    CallableClient

    public class Calculator
    extends Tester
    implements CallableClient
    Test client. Performs simple integer arithmetic.
    Since:
    21 Jul 2008
    Author:
    Mark Taylor
    • Field Detail

      • callMap_

        private final java.util.Map callMap_
      • random_

        private final java.util.Random random_
      • nCalc_

        private volatile int nCalc_
      • nCall_

        private volatile int nCall_
      • logger_

        private static final java.util.logging.Logger logger_
      • iconUrl_

        private static java.lang.String iconUrl_
      • NOTIFY_MODE

        public static final Calculator.SendMode NOTIFY_MODE
        Sends messages using the Notify delivery pattern.
      • ASYNCH_MODE

        public static final Calculator.SendMode ASYNCH_MODE
        Sends messages using the Synchronous Call/Response delivery pattern.
      • SYNCH_MODE

        public static final Calculator.SendMode SYNCH_MODE
        Sends messages using the Asynchronous Call/Response delivery pattern.
      • RANDOM_MODE

        public static final Calculator.SendMode RANDOM_MODE
        Sends messages using a random choice of one of the other modes.
    • Constructor Detail

      • Calculator

        public Calculator​(HubConnection connection,
                          java.util.Random random)
                   throws SampException
        Constructor.
        Parameters:
        connection - hub connection
        random - random number generator
        Throws:
        SampException
    • Method Detail

      • sendMessage

        public void sendMessage​(java.lang.String receiverId,
                                Calculator.SendMode mode)
                         throws SampException
        Sends a randomly generated message in a randomly generated way to a given receiver. The receiver should be another calculator client, like this one. If the message is sent according to one of the call/response delivery patterns the response will be checked to ensure that it has the correct value.
        Parameters:
        receiverId - client ID of another Calculator client.
        Throws:
        SampException
      • getSendCount

        public int getSendCount()
        Returns the total number of messages sent using any delivery pattern.
        Returns:
        number of sends
      • getReceiveCount

        public int getReceiveCount()
        Returns the total number of messages received using any delivery pattern.
        Returns:
        number of receives
      • getConnection

        public HubConnection getConnection()
        Returns the hub connection used by this client.
        Returns:
        connection
      • flush

        public void flush()
        Waits until all the responses this client is expecting to get have been safely received.
      • receiveNotification

        public void receiveNotification​(java.lang.String senderId,
                                        Message msg)
        Description copied from interface: CallableClient
        Receives a message for which no response is required.
        Specified by:
        receiveNotification in interface CallableClient
        Parameters:
        senderId - public ID of sending client
        msg - message
      • receiveCall

        public void receiveCall​(java.lang.String senderId,
                                java.lang.String msgId,
                                Message msg)
                         throws SampException
        Description copied from interface: CallableClient
        Receives a message for which a response is required. The implementation must take care to call the hub's reply method at some future point.
        Specified by:
        receiveCall in interface CallableClient
        Parameters:
        senderId - public ID of sending client
        msgId - message identifier for later use with reply
        msg - message
        Throws:
        SampException
      • receiveResponse

        public void receiveResponse​(java.lang.String senderId,
                                    java.lang.String msgTag,
                                    Response response)
        Description copied from interface: CallableClient
        Receives a response to a message previously sent by this client.
        Specified by:
        receiveResponse in interface CallableClient
        Parameters:
        senderId - public ID of responding client
        msgTag - client-defined tag labelling previously-sent message
        response - returned response object
      • processCall

        private java.util.Map processCall​(java.lang.String senderId,
                                          Message msg)
        Does the work for both the receiveNotify and receiveCall methods.
        Parameters:
        senderId - sender public ID
        msg - message object
        Returns:
        content of the successful reply's samp.result entry
      • nextCall

        private int nextCall()
        Increments and then returns the number of calls so far made by this object.
        Returns:
        next value of the call counter
      • createRandomRequest

        private Calculator.CalcRequest createRandomRequest()
        Generates a random calculation request.
        Returns:
        new random request
      • getIconUrl

        private static java.lang.String getIconUrl()