package com.netifera.platform.host.processes.probe;
import org.osgi.service.component.ComponentContext;
import com.netifera.platform.api.dispatcher.DispatchException;
import com.netifera.platform.api.dispatcher.DispatchMismatchException;
import com.netifera.platform.api.dispatcher.IMessageDispatcher;
import com.netifera.platform.api.dispatcher.IMessageDispatcherService;
import com.netifera.platform.api.dispatcher.IMessageHandler;
import com.netifera.platform.api.dispatcher.IMessenger;
import com.netifera.platform.api.dispatcher.IProbeMessage;
import com.netifera.platform.api.dispatcher.MessengerException;
import com.netifera.platform.api.log.ILogManager;
import com.netifera.platform.api.log.ILogger;
import com.netifera.platform.host.processes.IProcessManager;
import com.netifera.platform.host.processes.LinuxProcessManager;
public class ProcessManager {
private ILogger logger;
IProcessManager manager;
protected void activate(ComponentContext ctx) {
manager = new LinuxProcessManager(logger);
}
protected void deactivate(ComponentContext ctx) {
}
private void getProcessList(IMessenger messenger, GetProcessList message) {
GetProcessList response = message.createResponse(manager.getProcessList());
try {
messenger.emitMessage(response);
} catch (MessengerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
};
}
private void registerHandlers(IMessageDispatcher dispatcher) {
IMessageHandler handler = new IMessageHandler() {
public void call(IMessenger messenger, IProbeMessage message)
throws DispatchException {
try {
dispatch(messenger, message);
} catch(MessengerException e) {
logger.warning("Error sending message response " + e.getMessage());
}
}
};
dispatcher.registerMessageHandler(GetProcessList.ID, handler);
}
private void dispatch(IMessenger messenger, IProbeMessage message) throws DispatchMismatchException, MessengerException {
if(message instanceof GetProcessList) {
getProcessList(messenger, (GetProcessList)message);
}
}
protected void setDispatcher(IMessageDispatcherService dispatcher) {
registerHandlers(dispatcher.getServerDispatcher());
}
protected void unsetDispatcher(IMessageDispatcherService dispatcher) {
}
protected void setLogManager(ILogManager logManager) {
this.logger = logManager.getLogger("Process Manager");
}
protected void unsetLogManager(ILogManager logManager) {
}
}