//
//   COMPONENT_NAME: somx
//
//   ORIGINS: 27
//
//
//   10H9767, 10H9769  (C) COPYRIGHT International Business Machines Corp. 1992,1994
//   All Rights Reserved
//   Licensed Materials - Property of IBM
//   US Government Users Restricted Rights - Use, duplication or
//   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//

/* @(#) 1.3 src/win/somx/somd/cpp/event/eventch.idl, somx.somd, som2.1 10/7/94 17:16:51  [11/1/94 21:14:57] */
/*
 *
 * DISCLAIMER OF WARRANTIES.
 * The following [enclosed] code is sample code created by IBM
 * Corporation. This sample code is not part of any standard or IBM
 * product and is provided to you solely for the purpose of assisting
 * you in the development of your applications.  The code is provided
 * "AS IS". IBM MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
 * NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE, REGARDING THE FUNCTION OR PERFORMANCE OF
 * THIS CODE.  IBM shall not be liable for any damages arising out of
 * your use of the sample code, even if they have been advised of the
 * possibility of such damages.
 *
 * DISTRIBUTION.
 * This sample code can be freely distributed, copied, altered, and
 * incorporated into other software, provided that it bears the above
 * Copyright notice and DISCLAIMER intact.
 */

#ifndef eventch_idl
#define eventch_idl

#include <somobj.idl>
#include <eventcom.idl>

module EventChannelAdmin  {

  interface ConsumerAdmin : SOMObject {
     EventComm::EventConnection add_push_consumer(in EventComm::Consumer c);
     EventComm::Supplier add_pull_consumer(in EventComm::EventConnection d);

#ifdef __SOMIDL__
  implementation {
    releaseorder: add_push_consumer, add_pull_consumer;

     //# Class Modifiers
    callstyle = idl;
    majorversion = 1;  minorversion = 1;
    dllname="event.dll";
      //# Method Modifiers
#ifndef _WIN32      
   passthru C_h_after = "#include <eventcom.ih>";
   passt_hru C_xh_after = "#include <eventcom.xih>";
#else
   /* WIN32_USE_CLASS_RESOLVE_MACROS */
   passthru C_h_after = "#define _WIN32_OPT"
                        "#include <eventcom.ih>"
                        "#undef _WIN32_OPT";
   passthru C_xh_after = "#define _WIN32_OPT"
                         "#include <eventcom.xih>"
                         "#undef _WIN32_OPT";
#endif   
  };
#endif /*  __SOMIDL__   */
  };

  interface SupplierAdmin : SOMObject {
    EventComm::EventConnection add_pull_supplier(in EventComm::Supplier s);
    EventComm::Consumer add_push_supplier (in EventComm::EventConnection d);

#ifdef __SOMIDL__
  implementation {
    releaseorder: add_pull_supplier, add_push_supplier;

    //# Class Modifiers
    callstyle = idl;
    majorversion = 1;  minorversion = 1;
    dllname="event.dll";
      //# Method Modifiers

    
  };
#endif /* __SOMIDL__   */
  };

  interface EventChannel : SOMObject {
    ConsumerAdmin  for_consumers();
    SupplierAdmin  for_suppliers();
    void  destroy();

#ifdef __SOMIDL__
  implementation {
    releaseorder: for_consumers, for_suppliers, destroy;

    //# instance variables
     ConsumerAdmin  cons_admin;
     SupplierAdmin  supp_admin;

    //# Class Modifiers
    callstyle = idl;
    majorversion = 1;  minorversion = 1;
    dllname="event.dll";
      //# Method Modifiers
  
  };
#endif /* __SOMIDL__   */
  };

};  /*  module EventChannelAdmin */

#endif /*  eventch_idl   */

