package org.zstack.test.multinodes; import org.springframework.beans.factory.annotation.Autowired; import org.zstack.core.Platform; import org.zstack.core.cloudbus.CloudBus; import org.zstack.core.cloudbus.CloudBusCallBack; import org.zstack.header.AbstractService; import org.zstack.header.message.LockResourceMessage; import org.zstack.header.message.Message; import org.zstack.header.message.MessageReply; import org.zstack.header.message.NeedReplyMessage; /** */ public class SilentLockService extends AbstractService { public static final String SERVICE_ID = "SilentLockService"; public static class DoLockMessage extends NeedReplyMessage { public String toLockServiceId; public String toManagementNodeUuid; } public static class SilentLockResourceMsg extends LockResourceMessage { } @Autowired private CloudBus bus; @Override public void handleMessage(final Message msg) { if (msg instanceof DoLockMessage) { DoLockMessage dmsg = (DoLockMessage) msg; SilentLockResourceMsg smsg = new SilentLockResourceMsg(); smsg.setUnlockKey(Platform.getUuid()); smsg.setReason("test"); bus.makeServiceIdByManagementNodeId(smsg, dmsg.toLockServiceId, dmsg.toManagementNodeUuid); bus.send(smsg, new CloudBusCallBack(null) { @Override public void run(MessageReply reply) { MessageReply r = new MessageReply(); bus.reply(msg, r); } }); } } @Override public String getId() { return bus.makeLocalServiceId(SERVICE_ID); } @Override public boolean start() { bus.registerService(this); return true; } @Override public boolean stop() { bus.unregisterService(this); return true; } }