(* ---------------------------------------------------------------------- *)
(* Common Object Service 
                                                                          *)
(* ---------------------------------------------------------------------- *)
(* ICosEvent - Interface Module for the Common Object Service
                "Event Services" 
                                                                          *)
(* ---------------------------------------------------------------------- *)
(* Symbol prefixing: I - Interface Module
		     C - Class Interface
		     T - Non-class Type
		     E - Enumeration Type
		     k - constant
		     p - parameter to a method
		     a - variable
                                                                          *)
(* ---------------------------------------------------------------------- *)

INTERFACE ICosEventComm;

TYPE TString = OPTIONAL ilu.CString;
TYPE TObjectSBH = OPTIONAL ilu.CString;
TYPE TAny = TString;

(* ---------------------------------------------------------------------- *)
(* Exception Definitions *)
(* ---------------------------------------------------------------------- *)

EXCEPTION Disconnected "Disconnected";

(* ---------------------------------------------------------------------- *)
(*  Push Event Services *)
(* ---------------------------------------------------------------------- *)

TYPE CPushConsumer = OBJECT
  METHODS
    Push(pData : TAny)
      RAISES Disconnected END,

    Disconnect()
  END;

TYPE CPushSupplier = OBJECT
  METHODS
    Disconnect()
  END;

(* ---------------------------------------------------------------------- *)
(*  Pull Event Services *)
(* ---------------------------------------------------------------------- *)

TYPE CPullSupplier = OBJECT
  METHODS
    Pull() : TAny
      RAISES Disconnected END,

    TryPull(OUT pHasEvent : BOOLEAN) : TAny
      RAISES Disconnected END,

    Disconnect()
  END;

TYPE CPullConsumer = OBJECT
  METHODS
    Disconnect()
  END;