package com.workshare.msnos.core.routing; import java.util.Collection; import com.workshare.msnos.core.Message; import com.workshare.msnos.core.Message.Status; import com.workshare.msnos.core.Receipt; import com.workshare.msnos.core.RemoteAgent; import com.workshare.msnos.core.Ring; public class HTTPRouteViaRing extends Route { public HTTPRouteViaRing(Router router) { super(router); } @Override public Receipt send(Message message) { RemoteAgent remote = cloud.getRemoteAgent(message.getTo()); if (remote == null) return null; Ring ring = remote.getRing(); Collection<RemoteAgent> agents = cloud.getRemoteAgents(); for (RemoteAgent agent : agents) { if (agent.getIden().equals(message.getTo())) continue; if (!ring.equals(agent.getRing())) continue; if (!router.hasRouteFor(agent)) continue; final Receipt receipt = router.sendViaHTTP(message, agent, 1, "HTTP-RINGD"); if (receipt.getStatus() == Status.DELIVERED) { return receipt; } } return null; } }