package org.ourgrid.broker.communication.sender;
import org.ourgrid.broker.response.UnwantWorkerResponseTO;
import org.ourgrid.common.interfaces.LocalWorkerProvider;
import org.ourgrid.common.interfaces.to.RequestSpecification;
import org.ourgrid.common.internal.SenderIF;
import org.ourgrid.common.specification.job.JobSpecification;
import br.edu.ufcg.lsd.commune.container.servicemanager.ServiceManager;
import br.edu.ufcg.lsd.commune.identification.ServiceID;
public class UnwantWorkerSender implements SenderIF<UnwantWorkerResponseTO> {
public void execute(UnwantWorkerResponseTO response,
ServiceManager manager) {
JobSpecification jobSpec = response.getJobSpec();
RequestSpecification spec = new RequestSpecification(response.getJobID(), jobSpec, response.getRequestID(), jobSpec.getRequirements(),
response.getRequiredWorkers(), response.getMaxFails(), response.getMaxReplicas(), manager.getMyCertPath());
LocalWorkerProvider lwp = (LocalWorkerProvider) manager.getStub(ServiceID.parse(
response.getPeerAddress()), LocalWorkerProvider.class);
ServiceID workerServiceID = ServiceID.parse(response.getWorkerAddress());
workerServiceID.getContainerID().setPublicKey(response.getWorkerPublicKey());
lwp.unwantedWorker(workerServiceID, spec);
}
}