// $Id: Basic.idl 92359 2010-10-25 14:49:59Z parsons $
//=============================================================================
/**
 * @file Basic.idl
 *
 * Definition of events, and common interfaces used in the BasicSP module.
 *
 * @author Balachandran Natarajan <bala@dre.vanderbilt.edu>
 */
//=============================================================================

#ifndef CIAO_BASIC_IDL
#define CIAO_BASIC_IDL

#include <Components.idl>

// @@NOTE: Do we need a pragma prefix. Anyway its broken now in TAO..

#pragma ciao lem "BasicE.idl"

module Extra
{
  typedef sequence<octet> OctetSeq;
  typedef long LongArray[3];

  exception NoReason {};
  exception NoRhyme {};

  struct UserDataQosPolicy {
    OctetSeq value;
  };

  struct key {
    LongArray value;
  };

  interface Superfluous
  {
    attribute string useless_attr;
    long superfluous_op (in string empty_arg)
      raises (NoReason);
    OctetSeq do_seq ();
  };

  interface Supernumerary
  {
    void supernumerary_op (out string dummy_arg)
      raises (NoRhyme, NoReason);
  };
};

// #pragma prefix ""

module Basic
{
  interface ReadData : Extra::Superfluous
  {
    string get_data ();
  };

  interface AnalyzeData
  {
    void perform_analysis (inout string data);
    attribute boolean fine_tooth_comb;
  };
#if !defined (CCM_NOEVENT)
  eventtype TimeOut {};
  eventtype DataAvailable {};
#endif
};
#endif /*CIAO_BASIC_IDL*/
