package org.ourgrid.peer.communication.sender;
import org.ourgrid.common.interfaces.RemoteWorkerProvider;
import org.ourgrid.common.interfaces.RemoteWorkerProviderClient;
import org.ourgrid.common.internal.SenderIF;
import org.ourgrid.peer.PeerConstants;
import org.ourgrid.peer.response.RemoteWorkerProviderRequestWorkersResponseTO;
import br.edu.ufcg.lsd.commune.container.servicemanager.ServiceManager;
import br.edu.ufcg.lsd.commune.identification.ServiceID;
public class RemoteWorkerProviderRequestWorkersSender implements SenderIF<RemoteWorkerProviderRequestWorkersResponseTO>{
public void execute(RemoteWorkerProviderRequestWorkersResponseTO response,
ServiceManager manager) {
RemoteWorkerProviderClient rwpc = (RemoteWorkerProviderClient) manager.getObjectDeployment(
PeerConstants.REMOTE_WORKER_PROVIDER_CLIENT).getObject();
RemoteWorkerProvider rwp = manager.getStub(ServiceID.parse(response.getRemoteWorkerProviderAddress()),
RemoteWorkerProvider.class);
if (rwp == null) {
manager.getLog().error("RemoteWorkerProvider stub [" + response.getRemoteWorkerProviderAddress() + "] is NULL during " +
"RemoteWorkerProviderRequestWorkers message sending.");
return;
}
rwp.requestWorkers(rwpc, response.getRequestSpec());
}
}