package com.netifera.platform.host.processes.probe; import com.netifera.platform.api.dispatcher.IProbeMessage; import com.netifera.platform.api.dispatcher.MessengerException; import com.netifera.platform.api.log.ILogger; import com.netifera.platform.api.probe.IProbe; import com.netifera.platform.dispatcher.StatusMessage; import com.netifera.platform.host.processes.IProcessManager; import com.netifera.platform.host.processes.Process; public class RemoteProcessManager implements IProcessManager { private final IProbe probe; private final ILogger logger; private String messengerError; public RemoteProcessManager(IProbe probe, ILogger logger) { this.probe = probe; this.logger = logger; } public Process[] getProcessList() { final GetProcessList msg = (GetProcessList) exchangeMessage(new GetProcessList()); if(msg == null) { logger.warning("GetProcessList failed " + messengerError); return null; } return msg.getProcessList(); } public boolean kill(int pid) { // TODO Auto-generated method stub return false; } @SuppressWarnings("unused") private boolean sendMessage(IProbeMessage message) { try { probe.getMessenger().sendMessage(message); return true; } catch (MessengerException e) { messengerError = e.getMessage(); return false; } } private IProbeMessage exchangeMessage(IProbeMessage message) { try { IProbeMessage response = probe.getMessenger().exchangeMessage(message); if(response instanceof StatusMessage) { return null; } else { return response; } } catch (MessengerException e) { messengerError = e.getMessage(); return null; } } }