org.jlab.coda.cMsg.subdomains
Class CA

java.lang.Object
  extended by org.jlab.coda.cMsg.cMsgSubdomainAdapter
      extended by org.jlab.coda.cMsg.subdomains.CA
All Implemented Interfaces:
cMsgSubdomainInterface

public class CA
extends cMsgSubdomainAdapter

cMsg subdomain handler for channel access (CA) subdomain. WARNING: This class may need some thread-safety measures added (Timmer). Executes send/get as CA put/get command. Uses JCA+CAJ.

Version:
1.0
Author:
Elliott Wolin

Constructor Summary
CA()
           
 
Method Summary
 void handleClientShutdown()
          Method to handle a client shutdown.
 void handleSendRequest(cMsgMessageFull msg)
          Method to handle message sent by client.
 void handleSubscribeAndGetRequest(java.lang.String subject, java.lang.String type, int id)
          Method to synchronously get a single message from the server for a one-time subscription of a subject and type.
 void handleSubscribeRequest(java.lang.String subject, java.lang.String type, int receiverSubscribeId)
          Method to handle subscribe request sent by domain client.
 int handleSyncSendRequest(cMsgMessageFull msg)
          Method to handle message sent by domain client in synchronous mode.
 void handleUnsubscribeRequest(java.lang.String subject, java.lang.String type, int receiverSubscribeId)
          Method to handle sunsubscribe request sent by domain client.
 boolean hasSend()
          Method to tell if the "send" cMsg API function is implemented by this interface implementation in the handleSendRequest(org.jlab.coda.cMsg.cMsgMessageFull) method.
 boolean hasSubscribe()
          Method to tell if the "subscribe" cMsg API function is implemented by this interface implementation in the handleSubscribeRequest(java.lang.String, java.lang.String, int) method.
 boolean hasSubscribeAndGet()
          Method to tell if the "subscribeAndGet" cMsg API function is implemented by this interface implementation in the handleSubscribeAndGetRequest(java.lang.String, java.lang.String, int) method.
 boolean hasSyncSend()
          Method to tell if the "syncSend" cMsg API function is implemented by this interface implementation in the handleSyncSendRequest(org.jlab.coda.cMsg.cMsgMessageFull) method.
 boolean hasUnsubscribe()
          Method to tell if the "unsubscribe" cMsg API function is implemented by this interface implementation in the handleUnsubscribeRequest(java.lang.String, java.lang.String, int) method.
 void registerClient(cMsgClientInfo info)
          Method to register domain client.
 void setMessageDeliverer(cMsgDeliverMessageInterface deliverer)
          Method to give the subdomain handler on object able to deliver messages to the client.
 void setUDLRemainder(java.lang.String UDLRemainder)
          Method to give the subdomain handler the appropriate part of the UDL the client used to talk to the domain server.
 
Methods inherited from class org.jlab.coda.cMsg.cMsgSubdomainAdapter
handleKeepAlive, handleSendAndGetRequest, handleShutdownClientsRequest, handleUnSendAndGetRequest, handleUnsubscribeAndGetRequest, hasSendAndGet, hasShutdown
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CA

public CA()
Method Detail

hasSend

public boolean hasSend()
Method to tell if the "send" cMsg API function is implemented by this interface implementation in the handleSendRequest(org.jlab.coda.cMsg.cMsgMessageFull) method.

Specified by:
hasSend in interface cMsgSubdomainInterface
Overrides:
hasSend in class cMsgSubdomainAdapter
Returns:
true if get implemented in handleSendRequest(org.jlab.coda.cMsg.cMsgMessageFull)

hasSyncSend

public boolean hasSyncSend()
Method to tell if the "syncSend" cMsg API function is implemented by this interface implementation in the handleSyncSendRequest(org.jlab.coda.cMsg.cMsgMessageFull) method.

Specified by:
hasSyncSend in interface cMsgSubdomainInterface
Overrides:
hasSyncSend in class cMsgSubdomainAdapter
Returns:
true if send implemented in handleSyncSendRequest(org.jlab.coda.cMsg.cMsgMessageFull)

hasSubscribeAndGet

public boolean hasSubscribeAndGet()
Method to tell if the "subscribeAndGet" cMsg API function is implemented by this interface implementation in the handleSubscribeAndGetRequest(java.lang.String, java.lang.String, int) method.

Specified by:
hasSubscribeAndGet in interface cMsgSubdomainInterface
Overrides:
hasSubscribeAndGet in class cMsgSubdomainAdapter
Returns:
true if subscribeAndGet implemented in handleSubscribeAndGetRequest(java.lang.String, java.lang.String, int)

hasSubscribe

public boolean hasSubscribe()
Method to tell if the "subscribe" cMsg API function is implemented by this interface implementation in the handleSubscribeRequest(java.lang.String, java.lang.String, int) method.

Specified by:
hasSubscribe in interface cMsgSubdomainInterface
Overrides:
hasSubscribe in class cMsgSubdomainAdapter
Returns:
true if subscribe implemented in handleSubscribeRequest(java.lang.String, java.lang.String, int)

hasUnsubscribe

public boolean hasUnsubscribe()
Method to tell if the "unsubscribe" cMsg API function is implemented by this interface implementation in the handleUnsubscribeRequest(java.lang.String, java.lang.String, int) method.

Specified by:
hasUnsubscribe in interface cMsgSubdomainInterface
Overrides:
hasUnsubscribe in class cMsgSubdomainAdapter
Returns:
true if unsubscribe implemented in handleUnsubscribeRequest(java.lang.String, java.lang.String, int)

setUDLRemainder

public void setUDLRemainder(java.lang.String UDLRemainder)
                     throws cMsgException
Method to give the subdomain handler the appropriate part of the UDL the client used to talk to the domain server.

Specified by:
setUDLRemainder in interface cMsgSubdomainInterface
Overrides:
setUDLRemainder in class cMsgSubdomainAdapter
Parameters:
UDLRemainder - last part of the UDL appropriate to the subdomain handler
Throws:
cMsgException

setMessageDeliverer

public void setMessageDeliverer(cMsgDeliverMessageInterface deliverer)
                         throws cMsgException
Method to give the subdomain handler on object able to deliver messages to the client.

Specified by:
setMessageDeliverer in interface cMsgSubdomainInterface
Overrides:
setMessageDeliverer in class cMsgSubdomainAdapter
Parameters:
deliverer - object able to deliver messages to the client
Throws:
cMsgException

registerClient

public void registerClient(cMsgClientInfo info)
                    throws cMsgException
Method to register domain client. Creates JCA, context, and channel objects.

Specified by:
registerClient in interface cMsgSubdomainInterface
Overrides:
registerClient in class cMsgSubdomainAdapter
Parameters:
info - information about client
Throws:
cMsgException - if unable to register

handleSendRequest

public void handleSendRequest(cMsgMessageFull msg)
                       throws cMsgException
Method to handle message sent by client.

Specified by:
handleSendRequest in interface cMsgSubdomainInterface
Overrides:
handleSendRequest in class cMsgSubdomainAdapter
Parameters:
msg - message from sender
Throws:
cMsgException - if a channel to the client is closed, cannot be created, or socket properties cannot be set

handleSyncSendRequest

public int handleSyncSendRequest(cMsgMessageFull msg)
                          throws cMsgException
Method to handle message sent by domain client in synchronous mode. It requries an integer response from the subdomain handler.

Specified by:
handleSyncSendRequest in interface cMsgSubdomainInterface
Overrides:
handleSyncSendRequest in class cMsgSubdomainAdapter
Parameters:
msg - message from sender
Returns:
response from subdomain handler
Throws:
cMsgException

handleSubscribeAndGetRequest

public void handleSubscribeAndGetRequest(java.lang.String subject,
                                         java.lang.String type,
                                         int id)
                                  throws cMsgException
Method to synchronously get a single message from the server for a one-time subscription of a subject and type.

Specified by:
handleSubscribeAndGetRequest in interface cMsgSubdomainInterface
Overrides:
handleSubscribeAndGetRequest in class cMsgSubdomainAdapter
Parameters:
subject - message subject subscribed to
type - message type subscribed to
id - message id refering to these specific subject and type values
Throws:
cMsgException

handleSubscribeRequest

public void handleSubscribeRequest(java.lang.String subject,
                                   java.lang.String type,
                                   int receiverSubscribeId)
                            throws cMsgException
Method to handle subscribe request sent by domain client. Performs CA monitorOn.

Specified by:
handleSubscribeRequest in interface cMsgSubdomainInterface
Overrides:
handleSubscribeRequest in class cMsgSubdomainAdapter
Parameters:
subject - message subject to subscribe to
type - message type to subscribe to
receiverSubscribeId - message id refering to these specific subject and type values
Throws:
cMsgException - if no client information is available or a subscription for this subject and type already exists

handleUnsubscribeRequest

public void handleUnsubscribeRequest(java.lang.String subject,
                                     java.lang.String type,
                                     int receiverSubscribeId)
                              throws cMsgException
Method to handle sunsubscribe request sent by domain client. This method is run after all exchanges between domain server and client. Performs CA monitorOff.

Specified by:
handleUnsubscribeRequest in interface cMsgSubdomainInterface
Overrides:
handleUnsubscribeRequest in class cMsgSubdomainAdapter
Parameters:
subject - message subject subscribed to
type - message type subscribed to
receiverSubscribeId - message id refering to these specific subject and type values
Throws:
cMsgException

handleClientShutdown

public void handleClientShutdown()
                          throws cMsgException
Method to handle a client shutdown.

Specified by:
handleClientShutdown in interface cMsgSubdomainInterface
Overrides:
handleClientShutdown in class cMsgSubdomainAdapter
Throws:
cMsgException