//
// $Id: test.idl 27435 1999-08-04 17:03:52Z coryan $
//

interface Peer;
typedef sequence<Peer> PeerSet;

interface Peer
{
  // = DESCRIPTION
  //   A simple interface to demo the AMI implementation.
  //   A set of "peers" run in the network, each one binds to the
  //   progress server, when all the peers are bound the server
  //   requests that each one send multiple "request" messages to each
  //   other, using AMI. The progress is reported back to the progress
  //   server for display.

  long request (in long id);
  // A simple request, sends back the number in <id>.

  oneway void start (in PeerSet the_peers,
                     in long iterations);
  // Start the demo in one Peer

  oneway void shutdown ();
  // Shutdown the ORB
};

interface Progress
{
  // = DESCRIPTION
  //   This interface is used to report progress, multiple
  //   applications identified by an <id> run in parallel, each one
  //   reports as the asynchronous requests are sent and received.

  oneway void sent_request (in long id);
  oneway void recv_reply (in long id);

  long bind (in Peer a_peer);
  // Bind one of the peers.
};
