//
//   COMPONENT_NAME: somx
//
//   ORIGINS: 27
//
//
//    25H7912  (C)  COPYRIGHT International Business Machines Corp. 1996
//   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.1 src/somples.nt/somd/cpp/event/eventcom.idl, somples.somd, som3.0 12/10/96 14:13:05 [12/23/96 08:40:35]

/*
 *
 * 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 eventcom_idl
#define eventcom_idl

#include <somobj.idl>

module EventComm
{

  exception  Disconnected { long ErrCode; char Reason[80]; };

  interface  EventConnection : SOMObject
  {
     void disconnect () raises (Disconnected);

     #ifdef __SOMIDL__
     implementation
     {
       releaseorder: disconnect;

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

  interface  Consumer : EventConnection
  {
     attribute  EventConnection ev_con;
     void push(in any event_data) raises (Disconnected);

     #ifdef __SOMIDL__
     implementation
     {
       releaseorder: push, _get_ev_con, _set_ev_con;

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

       //# Method Modifiers
       disconnect: override;

       memory_management = corba;
       _get_ev_con: object_owns_result;
     };
     #endif /* __SOMIDL__   */
  };


  interface Supplier : EventConnection
  {
     attribute  EventConnection ev_con;
     boolean try_pull(out any event_data) raises (Disconnected);

     #ifdef __SOMIDL__
     implementation
     {
       releaseorder:  try_pull,  _get_ev_con, _set_ev_con;

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

       //# Method Modifiers
       disconnect: override;
       memory_management = corba;
       _get_ev_con: object_owns_result;
       try_pull   : object_owns_result;
     };
     #endif /* __SOMIDL__   */
  };

};   /* module */

#endif  /* eventcom_idl */

