package org.ourgrid.broker.communication.sender;
import org.ourgrid.broker.communication.actions.ErrorOcurredMessageHandle;
import org.ourgrid.common.interfaces.Worker;
import org.ourgrid.common.interfaces.to.MessageHandle;
import org.ourgrid.common.internal.SenderIF;
import org.ourgrid.common.internal.response.MessageHandleResponseTO;
import br.edu.ufcg.lsd.commune.container.servicemanager.ServiceManager;
import br.edu.ufcg.lsd.commune.identification.ServiceID;
public class MessageHandleSender implements SenderIF<MessageHandleResponseTO>{
public void execute(MessageHandleResponseTO response,
ServiceManager manager) {
MessageHandle messageHandle = response.getMessageHandle();
if (response.isErrorMessage()) {
ErrorOcurredMessageHandle errorMessageHandle = (ErrorOcurredMessageHandle) messageHandle;
manager.getLog().error("Error ocurred: " + errorMessageHandle.getGridProcessError().getType().getDescription(),
errorMessageHandle.getGridProcessError().getErrorCause());
}
ServiceID serviceID = ServiceID.parse(response.getClientAddress());
Worker worker = (Worker) manager.getStub(serviceID, Worker.class);
if (worker != null)
worker.sendMessage(response.getMessageHandle());
}
}