节点间的通知
注册
ch.ethz.systems.cloudy2.server.components.gossiper.cassandra.Gossiper.load()
{
...
CloudyFactory.getMessaging().registerVerbHandler(GOSSIP_DIGEST_SYN_VERB, new GossipDigestSynVerbHandler());
CloudyFactory.getMessaging().registerVerbHandler(GOSSIP_DIGEST_ACK_VERB, new GossipDigestAckVerbHandler());
CloudyFactory.getMessaging().registerVerbHandler(GOSSIP_DIGEST_ACK2_VERB, new GossipDigestAck2VerbHandler());
....
}
调用
public static void receive(Message message) {
if (CloudyFactory.getTestingComponent().isSleeping())
return;
Runnable runnable = new MessageDeliveryTask(message);
ExecutorService stage = StageManager.getStage(message.getStage());
if (stage == null)
{
if (logger_.isDebugEnabled())
logger_.debug("Running " + message.getStage() + " on default stage");
messageDeserializerExecutor_.execute(runnable);
}
else
{
stage.execute(runnable);
}
}
public class MessageDeliveryTask implements Runnable
{
private Message message_;
public MessageDeliveryTask(Message message)
{
message_ = message;
}
public void run()
{
String verb = message_.getVerb();
IVerbHandler verbHandler = MessagingService.getInstance().getVerbHandler(verb);
if (verbHandler == null) {
logger_.warn("Unknown verb " + verb + ". No processing occurs");
} else {
verbHandler.doVerb(message_);
}
// System.out.println("PUT 2"+Thread.currentThread().getName());
}
}
applicationState