(* ---------------------------------------------------------------------- *)
(* Common Object Service 
                                                                          *)
(* ---------------------------------------------------------------------- *)
(* ICosLifeCycle - Interface Module for the Common Object Service
                  "Life Cycle Services" 

	Purpose:
		  Provide a way to control a remote service (object.)
		  Ping and Remove.
		
	Notes:
		  * Most of this definition is defined by OMG in the
		    Common Object Services Volume 1 specification.
                                                                          *)
(* ---------------------------------------------------------------------- *)

INTERFACE ICosLifeCycle;

TYPE TString = OPTIONAL ilu.CString;

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

EXCEPTION NotRemovable : TString "Not able to be removed.";

(* ---------------------------------------------------------------------- *)
(* CLifeCycle *)
(*                                                                     
     o should probably be inherited by most objects.                      
                                                                          *)
(* ---------------------------------------------------------------------- *)

TYPE CLifeCycle = OBJECT
(*  COLLECTIBLE*)
  METHODS
    Ping(),  
    (* Used to check the status of this object. *)
    (* Usually just a null function.            *)

    Remove()
	RAISES NotRemovable END
    (* Suggests to this object to remove (kill, destroy) itself. *)
  END;


(* ---------------------------------------------------------------------- *)
(* Symbol prefixing: I - Interface Module
		     C - Class Interface
		     T - Non-class Type
		     E - Enumeration Type
		     k - constant
		     p - parameter to a method
		     a - variable
                                                                          *)
(* ---------------------------------------------------------------------- *)