package org.ourgrid.peer.business.requester;
import java.util.ArrayList;
import java.util.List;
import org.ourgrid.common.interfaces.DiscoveryService;
import org.ourgrid.common.internal.IResponseTO;
import org.ourgrid.common.internal.RequesterIF;
import org.ourgrid.common.internal.response.RegisterInterestResponseTO;
import org.ourgrid.peer.PeerConstants;
import org.ourgrid.peer.business.controller.ds.DiscoveryServiceNotificationController;
import org.ourgrid.peer.business.dao.PeerDAOFactory;
import org.ourgrid.peer.dao.DiscoveryServiceClientDAO;
import org.ourgrid.peer.request.DSIsOverloadedRequestTO;
import org.ourgrid.peer.response.ScheduleDelayedInterestOnDSResponseTO;
/**
* Requester for DSIsOverloaded method
*/
public class DSIsOverloadedRequester implements RequesterIF<DSIsOverloadedRequestTO>{
/* (non-Javadoc)
* @see org.ourgrid.common.internal.RequesterIF#execute(org.ourgrid.common.internal.IRequestTO)
*/
@Override
public List<IResponseTO> execute(DSIsOverloadedRequestTO request) {
List<IResponseTO> responses = new ArrayList<IResponseTO>();
DiscoveryServiceNotificationController.getInstance().removeAliveDiscoveryService(
responses, request.getDSAddress());
DiscoveryServiceClientDAO dao = PeerDAOFactory.getInstance().getDiscoveryServiceClientDAO();
for (String dsId : dao.getDsAddresses()) {
if (dsId.equals(request.getDSAddress())) {
continue;
}
RegisterInterestResponseTO registerInterestResponse = new RegisterInterestResponseTO();
registerInterestResponse.setMonitorableAddress(dsId);
registerInterestResponse.setMonitorableType(DiscoveryService.class);
registerInterestResponse.setMonitorName(PeerConstants.DS_CLIENT);
responses.add(registerInterestResponse);
}
ScheduleDelayedInterestOnDSResponseTO delayedInterestResponse = new ScheduleDelayedInterestOnDSResponseTO();
delayedInterestResponse.setDsAddress(request.getDSAddress());
responses.add(delayedInterestResponse);
return responses;
}
}