/* * Copyright: Almende B.V. (2014), Rotterdam, The Netherlands * License: The Apache Software License, Version 2.0 */ package com.almende.eve.algorithms.clustering; import java.net.URI; import com.almende.eve.capabilities.handler.Handler; import com.almende.eve.protocol.Meta; import com.almende.eve.protocol.Protocol; import com.fasterxml.jackson.databind.node.ObjectNode; /** * The Class InboxProtocol, provides an easy way to get a single threaded agent, * only one inbound message in a single thread at a time. */ public class GlobalAddressProtocol implements Protocol { private GlobalAddressProtocolConfig params = null; /** * Instantiates a new protocol tracer. * * @param params * the params * @param handle * the handle */ public GlobalAddressProtocol(final ObjectNode params, final Handler<Object> handle) { this.params = GlobalAddressProtocolConfig.decorate(params); } @Override public ObjectNode getParams() { return this.params; } @Override public void delete() {} @Override public boolean inbound(Meta msg) { // just forwarding... return msg.nextIn(); } @Override public boolean outbound(Meta msg) { // just forwarding... if (msg.getPeer().getScheme().equals("eve")) { URI uri = GlobalAddressMapper.get().get(msg.getPeer().toASCIIString()); if(uri==null) { throw new GlobalAddressMappingNotFoundException(); } msg.setPeer(uri); } return msg.nextOut(); } }