<?xml version='1.0'?>

<!--
Two-node "ping" society definition with profiling enabled.
-->
<society>

  <node name='Node1'>
    <!-- required if any profiler is loaded -->
    <component
      class='org.cougaar.core.qos.profile.ProfilerCoordinator'
      priority='HIGH'
      insertionpoint='Node.AgentManager.Agent.Component'>
      <!-- once every ten seconds -->
      <argument name="period" value="10000"/>
    </component>

    <!--
    All of the below profilers components are optional and can be independently
    enabled/disabled.

    For example, you can comment out all the profiler components from here to
    the "agent name=" tag, and then uncomment only the "Throughput" component.
    This will enable "[throughput]" profiler logging.
    -->

    <!-- required if below TraffixMatrix is loaded -->
    <component
      class='org.cougaar.core.qos.tmatrix.AgentFlowAspect'
      insertionpoint='Node.AgentManager.Agent.MessageTransport.Aspect'/>

    <!-- optional mts-internal profilers -->
    <component
      class='org.cougaar.core.qos.profile.LocalTraffic'
      insertionpoint='Node.AgentManager.Agent.MessageTransport.Component'/>
    <component
      class='org.cougaar.core.qos.profile.RemoteTraffic'
      insertionpoint='Node.AgentManager.Agent.MessageTransport.Component'/>
    <component
      class='org.cougaar.core.qos.profile.Throughput'
      insertionpoint='Node.AgentManager.Agent.MessageTransport.Component'/>
    <component
      class='org.cougaar.core.qos.profile.TrafficMatrix'
      insertionpoint='Node.AgentManager.Agent.MessageTransport.Component'/>

    <!-- required if above TraffixMatrix is loaded -->
    <component class='org.cougaar.core.qos.tmatrix.AgentFlowRatePlugin'/>

    <!-- optional profilers -->
    <component class='org.cougaar.core.qos.profile.BlackboardSize'/>
    <component class='org.cougaar.core.qos.profile.JavaHeapSize'/>
    <component class='org.cougaar.core.qos.profile.Load'/>
    <component class='org.cougaar.core.qos.profile.NodeTraffic'/>
    <component class='org.cougaar.core.qos.profile.PersistSize'/>
    <component class='org.cougaar.core.qos.profile.ProcLoadAvg'/>
    <component class='org.cougaar.core.qos.profile.ProcNetDev'/>
    <component class='org.cougaar.core.qos.profile.ProcMemInfo'/>
    <component class='org.cougaar.core.qos.profile.ProcStat'/>
    <component class='org.cougaar.core.qos.profile.ProcStatus'/>
    <component class='org.cougaar.core.qos.profile.Resources'/>
    <component class='org.cougaar.core.qos.profile.VmStat'/>

    <!-- required if above BlackboardSize is loaded -->
    <component class='org.cougaar.core.qos.profile.BlackboardSizeInAgent'/>

    <agent name="NameServer">
      <!-- Act as a naming service agent for the society -->
      <component class="org.cougaar.core.wp.server.Server"/>
    </agent>

    <agent name='A'>
      <!-- required if above BlackboardSize is loaded -->
      <component class='org.cougaar.core.qos.profile.BlackboardSizeInAgent'/>

      <!-- This plugin sends the ping to agent "B" -->
      <component class="org.cougaar.demo.ping.PingSender">
        <argument name="target" value="B"/>
      </component>
      <!-- Our servlet to view the blackboard -->
      <component class="org.cougaar.demo.ping.PingServlet">
        <argument name="path" value="/ping"/>
      </component>
    </agent>
  </node>

  <node name='Node2'>
    <!-- 
    This can be an exact copy of the above Node1 components.

    For contrast, here we disable profiling on Node2.
    -->

    <agent name="B">
      <!-- This plugin replies to pings from any sender -->
      <component class="org.cougaar.demo.ping.PingReceiver"/>
    </agent>
  </node>

</society>
