//File: CosTypedEventChannelAdmin.idl
//Part of the Event Service
//Updated to reflect version 1.1 - March 2001

#ifndef _COS_TYPED_EVENT_CHANNEL_ADMIN_IDL_
#define _COS_TYPED_EVENT_CHANNEL_ADMIN_IDL_

#include <CosEventChannelAdmin.idl>
#include <CosTypedEventComm.idl>

#pragma prefix "omg.org"

module CosTypedEventChannelAdmin {  

   exception InterfaceNotSupported {};
   exception NoSuchImplementation {};
   typedef string Key;                             //Repository ID

   interface TypedProxyPushConsumer :  
         CosEventChannelAdmin::ProxyPushConsumer,  
         CosTypedEventComm::TypedPushConsumer  { };

   interface TypedProxyPullSupplier :
         CosEventChannelAdmin::ProxyPullSupplier,  
         CosTypedEventComm::TypedPullSupplier { };

   interface TypedSupplierAdmin :
         CosEventChannelAdmin::SupplierAdmin {
      TypedProxyPushConsumer obtain_typed_push_consumer(
            in Key supported_interface)      
         raises(InterfaceNotSupported);
      CosEventChannelAdmin::ProxyPullConsumer obtain_typed_pull_consumer (
            in Key uses_interface)     
          raises(NoSuchImplementation);
   };

   interface TypedConsumerAdmin :
         CosEventChannelAdmin::ConsumerAdmin {
      TypedProxyPullSupplier obtain_typed_pull_supplier(
            in Key supported_interface)      
         raises (InterfaceNotSupported);
      CosEventChannelAdmin::ProxyPushSupplier obtain_typed_push_supplier(
            in Key uses_interface)     
         raises(NoSuchImplementation);
   };

   interface TypedEventChannel {
      TypedConsumerAdmin for_consumers();       
      TypedSupplierAdmin for_suppliers();
      void destroy ();
   };
};

#endif /* ifndef _COS_TYPED_EVENT_CHANNEL_ADMIN_IDL_ */
