// ===========================================================================
//
// = FILE
//     Persian.idl
//
// = DESCRIPTION
//     Data struct and termination interface for the
//     DOVE Persian Recursion Demo.

// = AUTHOR
//     Chris Gill <cdgill@cs.wustl.edu>

// ============================================================================

#ifndef TAO_PERSIAN_RECURSION_IDL
#define TAO_PERSIAN_RECURSION_IDL

#include "TimeBase.idl"
#include "RtecScheduler.idl"
#pragma prefix ""

module PersianRecursion
{
  enum Line_Color_t
  // Defines the criticality of the operation.
  // For use with Dynamic Scheduler.
  {
    BLACK,
    BLUE,
    YELLOW,
    RED,
    GREEN,
    WHITE
  };

  struct Data
  {
    // Demuxing part.
    RtecScheduler::Criticality_t criticality_level;

    // Data part.
    Line_Color_t line_color;
    short x1;
    short y1;
    short x2;
    short y2;

    // Metrics part.
    TimeBase::TimeT computation_time;
  };


  interface Terminator
      // = DESCRIPTION
      // This interface specifies a single operation, used
      // to shut down the orb.  This allows the orb to
      // be shut down cleanly, from within a synchronously
      // servant dispatched servant, but with the request
      // originating from another thread.
  {
      void shutdown ();
  };

};

#endif /* TAO_PERSIAN_RECURSION_IDL */
