package org.zstack.core.debug;
import org.springframework.beans.factory.annotation.Autowired;
import org.zstack.core.cloudbus.CloudBus;
import org.zstack.core.cloudbus.MessageSafe;
import org.zstack.header.AbstractService;
import org.zstack.header.message.Message;
import java.util.List;
/**
* Created by xing5 on 2016/7/25.
*/
public class DebugManagerImpl extends AbstractService implements DebugManager {
@Autowired
private CloudBus bus;
@Override
public boolean start() {
return true;
}
@Override
public boolean stop() {
return true;
}
@Override
@MessageSafe
public void handleMessage(Message msg) {
if (msg instanceof APIDebugSignalMsg) {
handle((APIDebugSignalMsg)msg);
}
}
private void handle(APIDebugSignalMsg msg) {
APIDebugSignalEvent evt = new APIDebugSignalEvent(msg.getId());
for (String sig : msg.getSignals()) {
DebugSignal dsig = DebugSignal.valueOf(sig);
List<DebugSignalHandler> hs = sigHandlers.get(dsig);
if (hs == null) {
continue;
}
for (DebugSignalHandler h : hs) {
h.handleDebugSignal(dsig);
}
}
bus.publish(evt);
}
@Override
public String getId() {
return bus.makeLocalServiceId(DebugConstant.SERVICE_ID);
}
}