|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.objectweb.joram.mom.dest.DestinationImpl
org.objectweb.joram.mom.dest.TopicImpl
The TopicImpl
class implements the MOM topic behaviour,
basically distributing the received messages to subscribers.
A Topic might be part of a hierarchy; if it is the case, and if the topic is not on top of that hierarchy, it will have a father to forward messages to.
A topic might also be part of a cluster; if it is the case, it will have friends to forward messages to.
A topic can't be part of a hierarchy and of a cluster at the same time.
Field Summary | |
protected boolean |
alreadySentLocally
Internal boolean used for tagging local sendings. |
protected AgentId |
fatherId
Identifier of this topic's father, if any. |
protected java.util.Vector |
friends
Vector of cluster fellows, if any. |
protected java.util.Hashtable |
selectors
Table of subscribers' selectors. |
protected java.util.Vector |
subscribers
Vector of subscribers' identifiers. |
Fields inherited from class org.objectweb.joram.mom.dest.DestinationImpl |
adminId, clients, destId, dmqId, freeReading, freeWriting, READ, READWRITE, WRITE |
Constructor Summary | |
TopicImpl(AgentId destId,
AgentId adminId)
Constructs a TopicImpl instance. |
Method Summary | |
protected void |
doProcess(ClientMessages not)
Method specifically processing a ClientMessages instance. |
protected void |
doProcess(DeleteNot not)
Method specifically processing a fr.dyade.aaa.agent.DeleteNot instance. |
protected void |
doProcess(SetRightRequest not)
Method specifically processing a SetRightRequest instance. |
protected void |
doProcess(UnknownAgent uA)
Method specifically processing an UnknownAgent instance. |
protected void |
doReact(AgentId from,
org.objectweb.joram.mom.dest.ClusterAck ack)
Method implementing the reaction to a ClusterAck
notification sent by a topic requested to join the cluster. |
protected void |
doReact(AgentId from,
org.objectweb.joram.mom.dest.ClusterNot not)
Method implementing the reaction to a ClusterNot
notification sent by a fellow topic for notifying this topic
of a new cluster fellow. |
protected void |
doReact(AgentId from,
ClusterRequest req)
Method implementing the reaction to a ClusterRequest
instance requesting to add a topic to the cluster, or to set a
cluster with a given topic. |
protected void |
doReact(AgentId from,
org.objectweb.joram.mom.dest.ClusterTest not)
Method implementing the reaction to a ClusterTest
notification sent by a fellow topic for testing if this topic might be
part of a cluster. |
protected void |
doReact(AgentId from,
org.objectweb.joram.mom.dest.FatherAck not)
Method reacting to a FatherAck notification coming from
the topic this topic requested as a father. |
protected void |
doReact(AgentId from,
org.objectweb.joram.mom.dest.FatherTest not)
Method reacting to a FatherTest notification checking if it
can be a father to a topic. |
protected void |
doReact(AgentId from,
Monit_GetCluster not)
Method implementing the reaction to a Monit_GetCluster
notification requesting the identifiers of the cluster's topics. |
protected void |
doReact(AgentId from,
Monit_GetFather not)
Method implementing the reaction to a Monit_GetFather
notification requesting the identifier of the hierarchical father. |
protected void |
doReact(AgentId from,
Monit_GetSubscriptions not)
Method implementing the reaction to a Monit_GetSubscriptions notification requesting the
number of subscriptions. |
protected void |
doReact(AgentId from,
SetFatherRequest request)
Method implementing the reaction to a SetFatherRequest
instance notifying this topic it is part of a hierarchy as a son. |
protected void |
doReact(AgentId from,
SubscribeRequest not)
Method implementing the reaction to a SubscribeRequest
instance. |
protected void |
doReact(AgentId from,
org.objectweb.joram.mom.dest.TopicForwardNot not)
Method implementing the reaction to a TopicForwardNot
instance, carrying messages forwarded by a cluster fellow or a
hierarchical son. |
protected void |
doReact(AgentId from,
org.objectweb.joram.mom.dest.UnclusterNot not)
Method implementing the reaction to an UnclusterNot
notification sent by a topic leaving the cluster. |
protected void |
doReact(AgentId from,
UnclusterRequest request)
Method implementing the reaction to an UnclusterRequest
instance requesting this topic to leave the cluster it is part of. |
protected void |
doReact(AgentId from,
UnsetFatherRequest request)
Method implementing the reaction to an UnsetFatherRequest
instance notifying this topic to leave its father. |
protected void |
doReact(AgentId from,
UnsubscribeRequest not)
Method implementing the reaction to an UnsubscribeRequest
instance, requesting to remove a subscriber. |
protected void |
forwardMessages(ClientMessages messages)
Actually forwards a vector of messages to the father or the cluster fellows, if any. |
protected void |
processMessages(ClientMessages not)
Actually processes the distribution of the received messages to the valid subscriptions by sending a TopicMsgsReply notification
to the valid subscribers. |
void |
react(AgentId from,
Notification not)
Distributes the received notifications to the appropriate reactions. |
protected void |
specialProcess(Notification not)
The DestinationImpl class calls this method for passing
notifications which have been partly processed, so that they are
specifically processed by the TopicImpl class. |
java.lang.String |
toString()
|
Methods inherited from class org.objectweb.joram.mom.dest.DestinationImpl |
canBeDeleted, doReact, doReact, doReact, doReact, doReact, doReact, doReact, doReact, doReact, doReact, isAdministrator, isReader, isWriter, processSetRight, sendToDMQ, specialAdminProcess |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
protected AgentId fatherId
protected java.util.Vector friends
protected java.util.Vector subscribers
protected java.util.Hashtable selectors
protected transient boolean alreadySentLocally
Constructor Detail |
public TopicImpl(AgentId destId, AgentId adminId)
TopicImpl
instance.
destId
- Identifier of the agent hosting the topic.adminId
- Identifier of the administrator of the topic.Method Detail |
public java.lang.String toString()
public void react(AgentId from, Notification not) throws UnknownNotificationException
react
in class DestinationImpl
UnknownNotificationException
- If a received notification is
unexpected by the topic.protected void doReact(AgentId from, ClusterRequest req) throws AccessException
ClusterRequest
instance requesting to add a topic to the cluster, or to set a
cluster with a given topic.
AccessException
- If the requester is not an administrator.protected void doReact(AgentId from, org.objectweb.joram.mom.dest.ClusterTest not)
ClusterTest
notification sent by a fellow topic for testing if this topic might be
part of a cluster.
protected void doReact(AgentId from, org.objectweb.joram.mom.dest.ClusterAck ack)
ClusterAck
notification sent by a topic requested to join the cluster.
protected void doReact(AgentId from, org.objectweb.joram.mom.dest.ClusterNot not)
ClusterNot
notification sent by a fellow topic for notifying this topic
of a new cluster fellow.
protected void doReact(AgentId from, UnclusterRequest request) throws MomException
UnclusterRequest
instance requesting this topic to leave the cluster it is part of.
AccessException
- If the requester is not an administrator.
MomException
protected void doReact(AgentId from, org.objectweb.joram.mom.dest.UnclusterNot not)
UnclusterNot
notification sent by a topic leaving the cluster.
protected void doReact(AgentId from, SetFatherRequest request) throws MomException
SetFatherRequest
instance notifying this topic it is part of a hierarchy as a son.
AccessException
- If the requester is not an administrator.
MomException
protected void doReact(AgentId from, org.objectweb.joram.mom.dest.FatherTest not)
FatherTest
notification checking if it
can be a father to a topic.
protected void doReact(AgentId from, org.objectweb.joram.mom.dest.FatherAck not)
FatherAck
notification coming from
the topic this topic requested as a father.
protected void doReact(AgentId from, UnsetFatherRequest request) throws MomException
UnsetFatherRequest
instance notifying this topic to leave its father.
AccessException
- If the requester is not an administrator.
MomException
protected void doReact(AgentId from, Monit_GetSubscriptions not) throws AccessException
Monit_GetSubscriptions
notification requesting the
number of subscriptions.
AccessException
- If the requester is not the administrator.protected void doReact(AgentId from, Monit_GetFather not) throws AccessException
Monit_GetFather
notification requesting the identifier of the hierarchical father.
AccessException
- If the requester is not the administrator.protected void doReact(AgentId from, Monit_GetCluster not) throws AccessException
Monit_GetCluster
notification requesting the identifiers of the cluster's topics.
AccessException
- If the requester is not the administrator.protected void doReact(AgentId from, SubscribeRequest not) throws AccessException
SubscribeRequest
instance.
AccessException
- If the sender is not a READER.protected void doReact(AgentId from, UnsubscribeRequest not)
UnsubscribeRequest
instance, requesting to remove a subscriber.
protected void doReact(AgentId from, org.objectweb.joram.mom.dest.TopicForwardNot not)
TopicForwardNot
instance, carrying messages forwarded by a cluster fellow or a
hierarchical son.
protected void specialProcess(Notification not)
DestinationImpl
class calls this method for passing
notifications which have been partly processed, so that they are
specifically processed by the TopicImpl
class.
specialProcess
in class DestinationImpl
protected void doProcess(SetRightRequest not)
SetRightRequest
instance.
When a reader is removed, deleting this reader's subscription if any,
and sending an ExceptionReply
notification to the client.
protected void doProcess(ClientMessages not)
ClientMessages
instance.
This method may forward the messages to the topic father if any, or
to the cluster fellows if any.It may finally send
TopicMsgsReply
instances to the valid subscribers.
protected void doProcess(UnknownAgent uA)
UnknownAgent
instance.
This method notifies the administrator of the failing cluster or hierarchy building request, if needed, or removes the subscriptions of the deleted client, if any, or sets the father identifier to null if it comes from a deleted father.
protected void doProcess(DeleteNot not)
fr.dyade.aaa.agent.DeleteNot
instance.
UnknownAgent
notifications are sent to each subscriber
and UnclusterNot
notifications to the cluster
fellows.
protected void forwardMessages(ClientMessages messages)
protected void processMessages(ClientMessages not)
TopicMsgsReply
notification
to the valid subscribers.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |