/* * * * Copyright 1997-2006 BBNT Solutions, LLC * under sponsorship of the Defense Advanced Research Projects * Agency (DARPA). * * You can redistribute this software and/or modify it under the * terms of the Cougaar Open Source License as published on the * Cougaar Open Source Website (www.cougaar.org). * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * */ package org.cougaar.demo.ping; import org.cougaar.core.plugin.AnnotatedSubscriptionsPlugin; import org.cougaar.core.relay.SimpleRelay; import org.cougaar.util.annotations.Cougaar; import org.cougaar.util.annotations.Subscribe; /** * This plugin is an example ping target that receives relays and sends back a * reply. *

* A "verbose=boolean" plugin parameter and System property is * supported, exactly as documented in {@link PingSender}. *

* There must be one instance of this plugin in every agent that will receive * {@link PingSender} relays. For simplicity, it's easiest to load a copy of * this plugin into every agent. * * @property org.cougaar.demo.ping.PingReceiver.verbose=true * PingReceiver should output SHOUT-level logging messages, if not set as a * plugin parameter. * * @see PingSender Remote plugin that sends the ping relays to this plugin * * @see PingServlet Optional browser-based GUI. */ public class PingReceiver extends AnnotatedSubscriptionsPlugin { @Cougaar.Arg(name="verbose", defaultValue="true") public boolean verbose; @Cougaar.Execute(on=Subscribe.ModType.ADD, when="isRelayForAgent") public void executeRelay(SimpleRelay relay) { // Send back the same content as our response Object content = relay.getQuery(); Object response = content; relay.setReply(response); if (verbose && log.isShoutEnabled()) { log.shout("Responding to ping " + response + " from " + relay.getSource()); } blackboard.publishChange(relay); } public boolean isRelayForAgent(SimpleRelay relay) { return agentId.equals(relay.getTarget()); } }