class ClientTracker extends AbstractMessageHandler
TrackedClientSet
object. This class tries its best to handle complications arising
from the fact that calls concerning a client may arrive out of order
(for instance declareMetadata before registration or after unregistration).Modifier and Type | Class and Description |
---|---|
private static class |
ClientTracker.ClientOperation
Describes an operation to be performed on a TrackedClient object
which is already part of this tracker's model.
|
private static class |
ClientTracker.OperationQueue
Data structure for holding ClientOperation objects which (may) need
to be applied in the future.
|
private static class |
ClientTracker.TrackedClient
Client implementation used to populate internal data structures.
|
Modifier and Type | Field and Description |
---|---|
private java.util.Map |
clientMap_ |
private TrackedClientSet |
clientSet_ |
private static java.util.logging.Logger |
logger_ |
private static java.lang.String |
METADATA_MTYPE |
private ClientTracker.OperationQueue |
opQueue_ |
private static int |
QUEUE_TIME |
private static java.lang.String |
REGISTER_MTYPE |
private static java.lang.String |
SUBSCRIPTIONS_MTYPE |
private static java.lang.String[] |
TRACKED_MTYPES |
private static java.lang.String |
UNREGISTER_MTYPE |
Constructor and Description |
---|
ClientTracker(TrackedClientSet clientSet)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
Removes all clients from the list.
|
void |
initialise(HubConnection connection)
Initialises this tracker from a hub connection.
|
private void |
performClientOperation(ClientTracker.ClientOperation op,
HubConnection connection)
Performs an operation on a ClientOperation object.
|
java.util.Map |
processCall(HubConnection connection,
java.lang.String senderId,
Message message)
Implements message processing.
|
createResponse, getSubscriptions, receiveCall, receiveNotification, setSubscriptions
private final TrackedClientSet clientSet_
private final java.util.Map clientMap_
private final ClientTracker.OperationQueue opQueue_
private static final java.util.logging.Logger logger_
private static final int QUEUE_TIME
private static final java.lang.String REGISTER_MTYPE
private static final java.lang.String UNREGISTER_MTYPE
private static final java.lang.String METADATA_MTYPE
private static final java.lang.String SUBSCRIPTIONS_MTYPE
private static final java.lang.String[] TRACKED_MTYPES
public ClientTracker(TrackedClientSet clientSet)
clientSet
- object used to record registered clients and their
attributespublic void clear()
public void initialise(HubConnection connection) throws SampException
connection
- hub connection; may be null for no connectionSampException
public java.util.Map processCall(HubConnection connection, java.lang.String senderId, Message message)
AbstractMessageHandler
samp.result
part
of the call response, that is the MType-specific return value
name->value map.
As a special case, returning null is equivalent to returning an empty
map.
However, if AbstractMessageHandler.createResponse(java.util.Map)
is overridden, the return value
semantics may be different.processCall
in class AbstractMessageHandler
connection
- hub connectionsenderId
- public ID of sender clientmessage
- message with MType this handler is subscribed tocreateResponse
implementationprivate void performClientOperation(ClientTracker.ClientOperation op, HubConnection connection)
op
- client operationconnection
- hub connection