|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectfr.dyade.aaa.agent.Agent
org.objectweb.joram.mom.dest.Destination
org.objectweb.joram.mom.dest.Queue
public class Queue
The Queue
class implements the MOM queue behavior,
basically storing messages and delivering them upon clients requests.
Field Summary | |
---|---|
protected long |
arrivalsCounter
Counter of messages arrivals. |
protected java.util.Hashtable |
consumers
Table keeping the messages' consumers identifiers. |
protected java.util.Hashtable |
contexts
Table keeping the messages' consumers contexts. |
protected java.util.Hashtable |
deliveredMsgs
Table holding the delivered messages before acknowledgment. |
static org.objectweb.util.monolog.api.Logger |
logger
|
protected java.util.Vector |
messages
Vector holding the messages before delivery. |
protected int |
nbMaxMsg
nb Max of Message store in queue (-1 no limit). |
protected boolean |
receiving
true if the queue is currently receiving messages. |
protected java.util.Vector |
requests
Vector holding the requests before reply or expiry. |
Fields inherited from class org.objectweb.joram.mom.dest.Destination |
---|
_rights, clients, creationDate, dmqId, freeReading, freeWriting, nbMsgsDeliverSinceCreation, nbMsgsReceiveSinceCreation, nbMsgsSentToDMQSinceCreation, READ, READWRITE, task, WAKEUP_PERIOD, WRITE |
Fields inherited from class fr.dyade.aaa.agent.Agent |
---|
emptyString, fixed, logmon |
Constructor Summary | |
---|---|
Queue()
|
Method Summary | |
---|---|
protected void |
abortReceiveRequest(AgentId from,
AbortReceiveRequest not)
|
protected void |
acknowledgeRequest(AcknowledgeRequest not)
Method implementing the reaction to an AcknowledgeRequest
instance, requesting messages to be acknowledged. |
void |
addClientMessages(ClientMessages clientMsgs)
Adds the client messages in the queue. |
protected boolean |
addMessage(Message message)
Adds a message in the list of messages to deliver. |
protected void |
browseRequest(AgentId from,
BrowseRequest not)
Method implementing the queue reaction to a BrowseRequest
instance, requesting an enumeration of the messages on the queue. |
protected boolean |
checkDelivery(Message msg)
Returns true if conditions are ok to deliver the message. |
void |
cleanPendingMessage()
Removes all messages that the time-to-live is expired. |
protected DMQManager |
cleanPendingMessage(long currentTime)
Cleans the pending messages list. |
void |
cleanWaitingRequest()
Removes all request that the expiration time is expired. |
protected void |
cleanWaitingRequest(long currentTime)
Cleans the waiting request list. |
protected void |
deliverMessages(int index)
Actually tries to answer the pending "receive" requests. |
protected void |
denyRequest(AgentId from,
DenyRequest not)
Method implementing the reaction to a DenyRequest
instance, requesting messages to be denied. |
protected void |
doClientMessages(AgentId from,
ClientMessages not)
Method specifically processing a ClientMessages instance. |
protected void |
doDeleteNot(DeleteNot not)
Method specifically processing a fr.dyade.aaa.agent.DeleteNot instance. |
protected void |
doRightRequest(AgentId user,
int right)
Method specifically processing a SetRightRequest instance. |
protected void |
doUnknownAgent(UnknownAgent uA)
Method specifically processing an UnknownAgent instance. |
protected ClientMessages |
getClientMessages(int nb,
java.lang.String selector,
boolean remove)
Get a client message contain nb messages. |
static AgentId |
getDefaultDMQId()
Static method returning the default DMQ identifier. |
static int |
getDefaultThreshold()
Static method returning the default threshold. |
int |
getDeliveredMessageCount()
Returns the number of messages delivered and waiting for acknowledge. |
javax.management.openmbean.CompositeData |
getMessage(java.lang.String msgId)
Returns the description of a particular pending message. |
javax.management.openmbean.TabularData |
getMessages()
Returns the description of all pending messages. |
java.util.List |
getMessagesView()
Returns the description of all pending messages. |
protected java.lang.StringBuffer |
getMsgTxPrefix()
|
int |
getNbMaxMsg()
Returns the maximum number of message for the destination. |
long |
getNbMsgsReceiveSinceCreation()
Returns the number of messages received since creation time of this destination. |
int |
getPendingMessageCount()
Returns the number of pending messages in the queue. |
protected Message |
getQueueMessage(java.lang.String msgId,
boolean remove)
get mom message, delete if remove = true. |
int |
getThreshold()
Returns the threshold value of this queue, -1 if not set. |
byte |
getType()
Returns the type of this destination: Queue or Topic. |
int |
getWaitingRequestCount()
Returns the number of waiting requests in the queue. |
void |
handleAdminRequestNot(AgentId from,
FwdAdminRequestNot not)
|
protected void |
handleExpiredNot(AgentId from,
ExpiredNot not)
|
void |
initialize(boolean firstTime)
Initializes the destination. |
protected boolean |
isUndeliverable(Message message)
Returns true if a given message is considered as undeliverable,
because its delivery count matches the queue's threshold, if any, or the
server's default threshold value (if any). |
protected boolean |
isValidJMXAttribute(java.lang.String attrName)
This method allows to exclude some JMX attribute of getJMXStatistics method. |
protected void |
messageDelivered(java.lang.String msgId)
call in deliverMessages just after forward(msg), overload this method to process a specific treatment. |
protected void |
messageRemoved(java.lang.String msgId)
call in deliverMessages just after a remove message (invalid), overload this method to process a specific treatment. |
void |
react(AgentId from,
Notification not)
Distributes the received notifications to the appropriate reactions. |
void |
readBag(java.io.ObjectInputStream in)
The readBag method is responsible for reading from the stream and restoring the agent's transient state. |
protected void |
receiveRequest(AgentId from,
ReceiveRequest not)
Method implementing the reaction to a ReceiveRequest
instance, requesting a message. |
protected void |
setMsgTxName(Message msg)
|
void |
setNbMaxMsg(int nbMaxMsg)
Sets the maximum number of message for the destination. |
void |
setThreshold(int threshold)
Sets or unsets the threshold for this queue. |
protected void |
storeMessage(Message msg)
Actually stores a message in the deliverables vector. |
protected void |
storeMessageHeader(Message message)
Actually stores a message header in the deliverables vector. |
java.lang.String |
toString()
Returns a string representation of this destination. |
void |
wakeUpNot(WakeUpNot not)
wake up, and cleans the queue. |
void |
writeBag(java.io.ObjectOutputStream out)
The writeBag method is responsible for writing the extra data of this particular agent so that the corresponding readBag method can restore it. |
Methods inherited from class fr.dyade.aaa.agent.Agent |
---|
delete, delete, deploy, deploy, getAgentId, getCommitTime, getId, getLogTopic, getName, getReactNb, getReactTime, isDeployed, isFixed, needToBeCommited, save, sendTo, sendTo, sendTo, setName, setNoSave, setSave |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface org.objectweb.joram.mom.dest.DestinationMBean |
---|
delete, getCreationDate, getCreationTimeInMillis, getDestinationId, getDMQId, getName, getNbMsgsDeliverSinceCreation, getNbMsgsSentToDMQSinceCreation, getPeriod, getRight, getRights, isFreeReading, isFreeWriting, setFreeReading, setFreeWriting, setPeriod |
Methods inherited from interface fr.dyade.aaa.agent.AgentMBean |
---|
getAgentId, getCommitTime, getReactNb, getReactTime, isFixed |
Field Detail |
---|
public static org.objectweb.util.monolog.api.Logger logger
protected java.util.Hashtable consumers
protected java.util.Hashtable contexts
protected long arrivalsCounter
protected java.util.Vector requests
protected transient boolean receiving
true
if the queue is currently receiving messages.
protected transient java.util.Vector messages
protected transient java.util.Hashtable deliveredMsgs
protected int nbMaxMsg
Constructor Detail |
---|
public Queue()
Method Detail |
---|
public int getThreshold()
getThreshold
in interface QueueMBean
public void setThreshold(int threshold)
setThreshold
in interface QueueMBean
threshold
- The threshold value to be set (-1 for unsetting previous value).public static int getDefaultThreshold()
public static AgentId getDefaultDMQId()
public void react(AgentId from, Notification not) throws java.lang.Exception
react
in class Destination
from
- agent sending notificationnot
- notification to react to
java.lang.Exception
public void cleanWaitingRequest()
cleanWaitingRequest
in interface QueueMBean
protected void cleanWaitingRequest(long currentTime)
currentTime
- The current time.public final int getWaitingRequestCount()
getWaitingRequestCount
in interface QueueMBean
public void cleanPendingMessage()
cleanPendingMessage
in interface QueueMBean
public byte getType()
Destination
getType
in class Destination
DestinationConstants.TOPIC_TYPE
,
DestinationConstants.QUEUE_TYPE
protected DMQManager cleanPendingMessage(long currentTime)
currentTime
- The current time.
DMQManager
which contains the expired messages.
null
if there wasn't any.public final int getPendingMessageCount()
getPendingMessageCount
in interface QueueMBean
public final int getDeliveredMessageCount()
getDeliveredMessageCount
in interface QueueMBean
public final long getNbMsgsReceiveSinceCreation()
Destination
getNbMsgsReceiveSinceCreation
in interface DestinationMBean
getNbMsgsReceiveSinceCreation
in class Destination
public final int getNbMaxMsg()
getNbMaxMsg
in interface QueueMBean
public void setNbMaxMsg(int nbMaxMsg)
setNbMaxMsg
in interface QueueMBean
nbMaxMsg
- the maximum number of message (-1 set no limit).public void initialize(boolean firstTime)
initialize
in class Destination
firstTime
- true when first called by the factorypublic java.lang.String toString()
toString
in interface AgentMBean
toString
in interface DestinationMBean
toString
in class Agent
public void wakeUpNot(WakeUpNot not)
wakeUpNot
in class Destination
protected boolean isValidJMXAttribute(java.lang.String attrName)
isValidJMXAttribute
in class Destination
attrName
- name of attribute to test.
protected void receiveRequest(AgentId from, ReceiveRequest not) throws AccessException
ReceiveRequest
instance, requesting a message.
This method stores the request and launches a delivery sequence.
AccessException
- If the sender is not a reader.protected void browseRequest(AgentId from, BrowseRequest not) throws AccessException
BrowseRequest
instance, requesting an enumeration of the messages on the queue.
The method sends a BrowseReply
back to the client. Expired
messages are sent to the DMQ.
AccessException
- If the requester is not a reader.protected void acknowledgeRequest(AcknowledgeRequest not)
AcknowledgeRequest
instance, requesting messages to be acknowledged.
protected void denyRequest(AgentId from, DenyRequest not)
DenyRequest
instance, requesting messages to be denied.
This method denies the messages and launches a delivery sequence. Messages considered as undeliverable are sent to the DMQ.
protected void abortReceiveRequest(AgentId from, AbortReceiveRequest not)
public void handleAdminRequestNot(AgentId from, FwdAdminRequestNot not)
handleAdminRequestNot
in class Destination
Destination.handleAdminRequestNot(fr.dyade.aaa.agent.AgentId, org.objectweb.joram.mom.notifications.FwdAdminRequestNot)
protected void doRightRequest(AgentId user, int right)
SetRightRequest
instance.
When a reader is removed, and receive requests of this reader are still
on the queue, they are replied to by an ExceptionReply
.
doRightRequest
in class Destination
user
- The user about right modification.right
- The right modification.protected void doClientMessages(AgentId from, ClientMessages not)
ClientMessages
instance.
This method stores the messages and launches a delivery sequence.
doClientMessages
in class Destination
protected void doUnknownAgent(UnknownAgent uA)
UnknownAgent
instance.
The specific processing is done when a QueueMsgReply
was
sent to a requester which does not exist anymore. In that case, the
messages sent to this requester and not yet acknowledged are marked as
"denied" for delivery to an other requester, and a new delivery sequence
is launched. Messages considered as undeliverable are removed and sent to
the DMQ.
doUnknownAgent
in class Destination
protected void doDeleteNot(DeleteNot not)
fr.dyade.aaa.agent.DeleteNot
instance.
ExceptionReply
replies are sent to the pending receivers,
and the remaining messages are sent to the DMQ and deleted.
doDeleteNot
in class Destination
protected final java.lang.StringBuffer getMsgTxPrefix()
protected final void setMsgTxName(Message msg)
protected final void storeMessage(Message msg)
msg
- The message to store.protected final void storeMessageHeader(Message message)
message
- The message to store.protected final boolean addMessage(Message message)
message
- the message to add.
protected ClientMessages getClientMessages(int nb, java.lang.String selector, boolean remove)
nb
messages.
nb
- number of messages returned in ClientMessage.selector
- jms selectorremove
- delete all messages returned if true
protected Message getQueueMessage(java.lang.String msgId, boolean remove)
msgId
- message identificationremove
- if true delete message
public javax.management.openmbean.CompositeData getMessage(java.lang.String msgId) throws java.lang.Exception
getMessage
in interface QueueMBean
msgId
- The unique message's identifier.
java.lang.Exception
MessageJMXWrapper
public javax.management.openmbean.TabularData getMessages() throws java.lang.Exception
getMessages
in interface QueueMBean
java.lang.Exception
MessageJMXWrapper
public java.util.List getMessagesView()
QueueMBean
getMessagesView
in interface QueueMBean
protected void deliverMessages(int index)
The method may send QueueMsgReply
replies to clients.
index
- Index where starting to "browse" the requests.protected boolean checkDelivery(Message msg)
protected void messageDelivered(java.lang.String msgId)
protected void messageRemoved(java.lang.String msgId)
protected boolean isUndeliverable(Message message)
true
if a given message is considered as undeliverable,
because its delivery count matches the queue's threshold, if any, or the
server's default threshold value (if any).
public void addClientMessages(ClientMessages clientMsgs)
clientMsgs
- client message notification.public void readBag(java.io.ObjectInputStream in) throws java.io.IOException, java.lang.ClassNotFoundException
BagSerializer
readBag
in interface BagSerializer
java.io.IOException
java.lang.ClassNotFoundException
public void writeBag(java.io.ObjectOutputStream out) throws java.io.IOException
BagSerializer
writeBag
in interface BagSerializer
java.io.IOException
protected void handleExpiredNot(AgentId from, ExpiredNot not)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |