// messaging.idl
//
// A subset of the standard Messaging module with AMI definitions.

#ifndef _omniorb_messaging_idl_
#define _omniorb_messaging_idl_

#include "corbaidl.idl"
#include "pollable.idl"

#pragma prefix "omg.org"

module Messaging {

  //
  // Base ReplyHandler

  interface ReplyHandler {};


  //
  // Standard Poller valuetype

  abstract valuetype Poller : CORBA::Pollable {
    readonly attribute Object  operation_target;
    readonly attribute string  operation_name;
    attribute ReplyHandler     associated_handler;
    readonly attribute boolean is_from_poller;
  };


  //
  // Subset of ExceptionHolder valuetype.
  // Commented-out parts are from the standard, but not implemented here.

  /*
  typedef CORBA::OctetSeq MarshaledException;
  native UserExceptionBase;
  */

  valuetype ExceptionHolder {
    void raise_exception() /* raises (UserExceptionBase) */;

    /*
    void raise_exception_with_list(in CORBA::ExceptionList exc_list)
      raises (UserExceptionBase);

    private boolean is_system_exception;
    private boolean byte_order;
    private MarshaledException marshaled_exception;
    */
  };

};

#endif // _omniorb_messaging_idl_
