org.jlab.coda.cMsg.subdomains
Class Queue

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

public class Queue
extends cMsgSubdomainAdapter

cMsg subdomain handler for Queue subdomain. UDL: cMsg:cMsg://host:port/Queue/myQueueName?driver=myDriver&url=myURL&account=myAccount&password=myPassword e.g. cMsg:cMsg://ollie/Queue/ejw?driver=com.mysql.jdbc.Driver&url=jdbc:mysql://xdaq/test&user=davidl stores/retrieves cMsgMessageFull messages from SQL database. Gets database parameters from UDL. Supported database so far: mySQL, PostgreSQL (not tested yet...)

Version:
1.0
Author:
Elliiott Wolin

Constructor Summary
Queue()
           
 
Method Summary
 void handleClientShutdown()
          Method to handle a client shutdown.
 void handleSendAndGetRequest(cMsgMessageFull message)
          Method to synchronously get a single message from a receiver by sending out a message to be responded to.
 void handleSendRequest(cMsgMessageFull msg)
          Method to handle message sent by client.
 int handleSyncSendRequest(cMsgMessageFull msg)
          Method to handle message sent by domain client in synchronous mode.
 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 hasSendAndGet()
          Method to tell if the "sendAndGet" cMsg API function is implemented by this interface implementation in the handleSendAndGetRequest(org.jlab.coda.cMsg.cMsgMessageFull) 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.
 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, handleShutdownClientsRequest, handleSubscribeAndGetRequest, handleSubscribeRequest, handleUnSendAndGetRequest, handleUnsubscribeAndGetRequest, handleUnsubscribeRequest, hasShutdown, hasSubscribe, hasSubscribeAndGet, hasUnsubscribe
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Queue

public Queue()
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)

hasSendAndGet

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

Specified by:
hasSendAndGet in interface cMsgSubdomainInterface
Overrides:
hasSendAndGet in class cMsgSubdomainAdapter
Returns:
true if sendAndGet implemented in handleSendAndGetRequest(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)

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 separate database connection for each client connection. UDL contains driver name, database JDBC URL, account, password, and table name to use. Column names are fixed (domain, sender, subject, etc.).

Specified by:
registerClient in interface cMsgSubdomainInterface
Overrides:
registerClient in class cMsgSubdomainAdapter
Parameters:
info - information about client
Throws:
cMsgException - upon error

handleSendRequest

public void handleSendRequest(cMsgMessageFull msg)
                       throws cMsgException
Method to handle message sent by client. Inserts message into SQL database table via JDBC.

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

handleSendAndGetRequest

public void handleSendAndGetRequest(cMsgMessageFull message)
                             throws cMsgException
Method to synchronously get a single message from a receiver by sending out a message to be responded to. Currently just returns message at head of queue.

Specified by:
handleSendAndGetRequest in interface cMsgSubdomainInterface
Overrides:
handleSendAndGetRequest in class cMsgSubdomainAdapter
Parameters:
message - message requesting what sort of message to get
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