//File: LifeCycleService.idl
// An Example LifeCycleService Module
// Note: This is only an example of the LifeCycle service,
//       and is NOT part of the LifeCycle service

#ifndef _LIFE_CYCLE_SERVICE_IDL_
#define _LIFE_CYCLE_SERVICE_IDL_

// omniORB specific pragmas to insert extra includes into the stub header.
#pragma hh #include "COS_sysdep.h"

#include <CosLifeCycle.idl> 

#pragma prefix "omg.org"

module LifeCycleService {

	typedef sequence <CosLifeCycle::NameValuePair> PolicyList;
	typedef sequence <CosLifeCycle::Key> Keys;
	typedef sequence <CosLifeCycle::NameValuePair> PropertyList; 
	typedef sequence <CosNaming::NameComponent> NameComponents;

	interface LifeCycleServiceAdmin {

		attribute PolicyList policies;

		void bind_generic_factory(
				in CosLifeCycle::GenericFactory gf,
				in CosNaming::NameComponent name,
				in Keys key_set,
				in PropertyList other_properties)
			raises (CosNaming::NamingContext::AlreadyBound, CosNaming::NamingContext::InvalidName);

		void unbind_generic_factory(
				in CosNaming::NameComponent name)
			raises (CosNaming::NamingContext::NotFound, CosNaming::NamingContext::InvalidName);

		CosLifeCycle::GenericFactory resolve_generic_factory(
				in CosNaming::NameComponent name)
			raises (CosNaming::NamingContext::NotFound, CosNaming::NamingContext::InvalidName);

		NameComponents list_generic_factories();

		boolean match_service (in CosLifeCycle::GenericFactory f);

		string get_hint();

		void get_link_properties(
				in CosNaming::NameComponent name,
				out Keys key_set,
				out PropertyList other_properties)
			raises (CosNaming::NamingContext::NotFound, CosNaming::NamingContext::InvalidName);
	};

};
#endif /* ifndef _LIFE_CYCLE_SERVICE_IDL_ */
