package org.ourgrid.peer.communication.sender;
import org.ourgrid.common.interfaces.RemoteWorkerProvider;
import org.ourgrid.common.internal.SenderIF;
import org.ourgrid.peer.response.DisposeRemoteWorkerResponseTO;
import br.edu.ufcg.lsd.commune.container.servicemanager.ServiceManager;
import br.edu.ufcg.lsd.commune.identification.ServiceID;
public class DisposeRemoteWorkerSender implements
SenderIF<DisposeRemoteWorkerResponseTO> {
public void execute(DisposeRemoteWorkerResponseTO response,
ServiceManager manager) {
RemoteWorkerProvider provider = (RemoteWorkerProvider) manager.getStub(
ServiceID.parse(response.getProviderAddress()),
RemoteWorkerProvider.class);
ServiceID workerServiceID = ServiceID.parse(response.getWorkerAddress());
String workerPublicKey = response.getWorkerPublicKey();
workerServiceID.getContainerID().setPublicKey(workerPublicKey);
if (provider == null) {
manager.getLog().error("RemoteWorkerProvider stub [" + response.getProviderAddress() + "] is NULL during " +
"DisposeRemoteWorker message sending.");
return;
}
if (manager.getStubDeploymentID(provider) == null) {
manager.getLog().error("RemoteWorkerProvider stub [" + response.getProviderAddress() + "] is DOWN during " +
"DisposeRemoteWorker message sending.");
return;
}
provider.disposeWorker(workerServiceID);
}
}