package org.ourgrid.peer.communication.sender;
import org.ourgrid.common.interfaces.management.RemoteWorkerManagement;
import org.ourgrid.common.interfaces.management.RemoteWorkerManagementClient;
import org.ourgrid.common.internal.SenderIF;
import org.ourgrid.peer.response.RemoteWorkForBrokerResponseTO;
import br.edu.ufcg.lsd.commune.container.servicemanager.ServiceManager;
import br.edu.ufcg.lsd.commune.identification.ServiceID;
public class RemoteWorkForBrokerSender implements SenderIF<RemoteWorkForBrokerResponseTO> {
public void execute(RemoteWorkForBrokerResponseTO response, ServiceManager manager) {
String brokerPublicKey = response.getBrokerPublicKey();
RemoteWorkerManagement workerManagement = (RemoteWorkerManagement) manager.getStub(
ServiceID.parse(response.getWorkerManagementAddress()), RemoteWorkerManagement.class);
ServiceID rwmcServiceId = ServiceID.parse(response.getWorkerManagementClientAddress());
RemoteWorkerManagementClient rwmc = (RemoteWorkerManagementClient) manager.getObjectDeployment(
rwmcServiceId.getServiceName()).getObject();
if (workerManagement == null) {
manager.getLog().error("RemoteWorkerManagement stub [" + response.getWorkerManagementAddress() + "] is NULL during " +
"RemoteWorkForBroker message sending.");
return;
}
if (manager.getStubDeploymentID(workerManagement) == null) {
manager.getLog().error("RemoteWorkerManagement stub [" + response.getWorkerManagementAddress() + "] is DOWN during " +
"RemoteWorkForBroker message sending.");
return;
}
workerManagement.workForBroker(rwmc, brokerPublicKey);
}
}