/* -*- C++ -*- $Id$ */

// ******  Code generated by the The ACE ORB (TAO) IDL Compiler *******
// TAO and the TAO IDL Compiler have been developed by the Center for
// Distributed Object Computing at Washington University, St. Louis.
//
// Information about TAO is available at:
//                 http://www.cs.wustl.edu/~schmidt/TAO.html

#ifndef _TAO_IDL_COSEVENTCOMMS_H_
#define _TAO_IDL_COSEVENTCOMMS_H_

#include "CosEventCommC.h"


#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#if defined(_MSC_VER)
#if (_MSC_VER >= 1200)
#pragma warning(push)
#endif /* _MSC_VER >= 1200 */
#pragma warning(disable:4250)
#endif /* _MSC_VER */

TAO_NAMESPACE  POA_CosEventComm
{
  class PushConsumer;
  typedef PushConsumer *PushConsumer_ptr;
  class TAO_ORBSVCS_Export PushConsumer :  public virtual PortableServer::ServantBase
  {
  protected:
    PushConsumer (void);

  public:
    PushConsumer (const PushConsumer& rhs);
    virtual ~PushConsumer (void);


    virtual CORBA::Boolean _is_a (
        const char* logical_type_id,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual void* _downcast (
        const char* logical_type_id
      );

    static void _is_a_skel (
        CORBA::ServerRequest &req,
        void *obj,
        void *context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    static void _non_existent_skel (
        CORBA::ServerRequest &req,
        void *obj,
        void *context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual void _dispatch (
        CORBA::ServerRequest &_tao_req,
        void *_tao_context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    ::CosEventComm::PushConsumer *_this (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual const char* _interface_repository_id (void) const;

    virtual void push (
        const CORBA::Any & data,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        CosEventComm::Disconnected
      )) = 0;

    static void push_skel (
        CORBA::ServerRequest &_tao_req, 
        void *_tao_obj, 
        void *_tao_context, 
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual void disconnect_push_consumer (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      )) = 0;

    static void disconnect_push_consumer_skel (
        CORBA::ServerRequest &_tao_req, 
        void *_tao_obj, 
        void *_tao_context, 
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );


  };


#if !defined (_COSEVENTCOMM_PUSHCONSUMER___THRU_POA_COLLOCATED_SH_)
#define _COSEVENTCOMM_PUSHCONSUMER___THRU_POA_COLLOCATED_SH_

  class TAO_ORBSVCS_Export _tao_thru_poa_collocated_PushConsumer     : public virtual ::CosEventComm::PushConsumer
  {
  public:
    _tao_thru_poa_collocated_PushConsumer (
        TAO_Stub *stub
      );
    virtual CORBA::Boolean _is_a(
        const CORBA::Char *logical_type_id,
        CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
      );
    
    virtual CORBA::Boolean _non_existent(
        CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
      );
    
        virtual void push (
        const CORBA::Any & data,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        CosEventComm::Disconnected
      ));

    virtual void disconnect_push_consumer (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));

  };


#endif /* end #if !defined */

  
#if defined (ACE_HAS_USING_KEYWORD)
  // TIE class: Refer to CORBA v2.2, Section 20.34.4
  template <class T>
  class TAO_ORBSVCS_Export PushConsumer_tie : public PushConsumer
  {
  public:
    PushConsumer_tie (T &t);
    // the T& ctor
    PushConsumer_tie (T &t, PortableServer::POA_ptr poa);
    // ctor taking a POA
    PushConsumer_tie (T *tp, CORBA::Boolean release=1);
    // ctor taking pointer and an ownership flag
    PushConsumer_tie (T *tp, PortableServer::POA_ptr poa, CORBA::Boolean release=1);
    // ctor with T*, ownership flag and a POA
    ~PushConsumer_tie (void);
    // dtor
    
    // TIE specific functions
    T *_tied_object (void);
    // return the underlying object
    void _tied_object (T &obj);
    // set the underlying object
    void _tied_object (T *obj, CORBA::Boolean release=1);
    // set the underlying object and the ownership flag
    CORBA::Boolean _is_owner (void);
    // do we own it
    void _is_owner (CORBA::Boolean b);
    // set the ownership
    
    // overridden ServantBase operations
    PortableServer::POA_ptr _default_POA (
        CORBA::Environment &env = 
          TAO_default_environment ()
      );
    void push (
        const CORBA::Any & data,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        CosEventComm::Disconnected
      ));

    void disconnect_push_consumer (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));

private:
    T *ptr_;
    PortableServer::POA_var poa_;
    CORBA::Boolean rel_;
    
    // copy and assignment are not allowed
    PushConsumer_tie (const PushConsumer_tie &);
    void operator= (const PushConsumer_tie &);
  };

#endif /* ACE_HAS_USING_KEYWORD */

  class PushSupplier;
  typedef PushSupplier *PushSupplier_ptr;
  class TAO_ORBSVCS_Export PushSupplier :  public virtual PortableServer::ServantBase
  {
  protected:
    PushSupplier (void);

  public:
    PushSupplier (const PushSupplier& rhs);
    virtual ~PushSupplier (void);


    virtual CORBA::Boolean _is_a (
        const char* logical_type_id,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual void* _downcast (
        const char* logical_type_id
      );

    static void _is_a_skel (
        CORBA::ServerRequest &req,
        void *obj,
        void *context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    static void _non_existent_skel (
        CORBA::ServerRequest &req,
        void *obj,
        void *context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual void _dispatch (
        CORBA::ServerRequest &_tao_req,
        void *_tao_context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    ::CosEventComm::PushSupplier *_this (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual const char* _interface_repository_id (void) const;

    virtual void disconnect_push_supplier (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      )) = 0;

    static void disconnect_push_supplier_skel (
        CORBA::ServerRequest &_tao_req, 
        void *_tao_obj, 
        void *_tao_context, 
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );


  };


#if !defined (_COSEVENTCOMM_PUSHSUPPLIER___THRU_POA_COLLOCATED_SH_)
#define _COSEVENTCOMM_PUSHSUPPLIER___THRU_POA_COLLOCATED_SH_

  class TAO_ORBSVCS_Export _tao_thru_poa_collocated_PushSupplier     : public virtual ::CosEventComm::PushSupplier
  {
  public:
    _tao_thru_poa_collocated_PushSupplier (
        TAO_Stub *stub
      );
    virtual CORBA::Boolean _is_a(
        const CORBA::Char *logical_type_id,
        CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
      );
    
    virtual CORBA::Boolean _non_existent(
        CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
      );
    
        virtual void disconnect_push_supplier (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));

  };


#endif /* end #if !defined */

  
#if defined (ACE_HAS_USING_KEYWORD)
  // TIE class: Refer to CORBA v2.2, Section 20.34.4
  template <class T>
  class TAO_ORBSVCS_Export PushSupplier_tie : public PushSupplier
  {
  public:
    PushSupplier_tie (T &t);
    // the T& ctor
    PushSupplier_tie (T &t, PortableServer::POA_ptr poa);
    // ctor taking a POA
    PushSupplier_tie (T *tp, CORBA::Boolean release=1);
    // ctor taking pointer and an ownership flag
    PushSupplier_tie (T *tp, PortableServer::POA_ptr poa, CORBA::Boolean release=1);
    // ctor with T*, ownership flag and a POA
    ~PushSupplier_tie (void);
    // dtor
    
    // TIE specific functions
    T *_tied_object (void);
    // return the underlying object
    void _tied_object (T &obj);
    // set the underlying object
    void _tied_object (T *obj, CORBA::Boolean release=1);
    // set the underlying object and the ownership flag
    CORBA::Boolean _is_owner (void);
    // do we own it
    void _is_owner (CORBA::Boolean b);
    // set the ownership
    
    // overridden ServantBase operations
    PortableServer::POA_ptr _default_POA (
        CORBA::Environment &env = 
          TAO_default_environment ()
      );
    void disconnect_push_supplier (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));

private:
    T *ptr_;
    PortableServer::POA_var poa_;
    CORBA::Boolean rel_;
    
    // copy and assignment are not allowed
    PushSupplier_tie (const PushSupplier_tie &);
    void operator= (const PushSupplier_tie &);
  };

#endif /* ACE_HAS_USING_KEYWORD */

  class PullSupplier;
  typedef PullSupplier *PullSupplier_ptr;
  class TAO_ORBSVCS_Export PullSupplier :  public virtual PortableServer::ServantBase
  {
  protected:
    PullSupplier (void);

  public:
    PullSupplier (const PullSupplier& rhs);
    virtual ~PullSupplier (void);


    virtual CORBA::Boolean _is_a (
        const char* logical_type_id,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual void* _downcast (
        const char* logical_type_id
      );

    static void _is_a_skel (
        CORBA::ServerRequest &req,
        void *obj,
        void *context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    static void _non_existent_skel (
        CORBA::ServerRequest &req,
        void *obj,
        void *context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual void _dispatch (
        CORBA::ServerRequest &_tao_req,
        void *_tao_context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    ::CosEventComm::PullSupplier *_this (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual const char* _interface_repository_id (void) const;

    virtual CORBA::Any * pull (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        CosEventComm::Disconnected
      )) = 0;

    static void pull_skel (
        CORBA::ServerRequest &_tao_req, 
        void *_tao_obj, 
        void *_tao_context, 
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual CORBA::Any * try_pull (
        CORBA::Boolean_out has_event,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        CosEventComm::Disconnected
      )) = 0;

    static void try_pull_skel (
        CORBA::ServerRequest &_tao_req, 
        void *_tao_obj, 
        void *_tao_context, 
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual void disconnect_pull_supplier (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      )) = 0;

    static void disconnect_pull_supplier_skel (
        CORBA::ServerRequest &_tao_req, 
        void *_tao_obj, 
        void *_tao_context, 
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );


  };


#if !defined (_COSEVENTCOMM_PULLSUPPLIER___THRU_POA_COLLOCATED_SH_)
#define _COSEVENTCOMM_PULLSUPPLIER___THRU_POA_COLLOCATED_SH_

  class TAO_ORBSVCS_Export _tao_thru_poa_collocated_PullSupplier     : public virtual ::CosEventComm::PullSupplier
  {
  public:
    _tao_thru_poa_collocated_PullSupplier (
        TAO_Stub *stub
      );
    virtual CORBA::Boolean _is_a(
        const CORBA::Char *logical_type_id,
        CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
      );
    
    virtual CORBA::Boolean _non_existent(
        CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
      );
    
        virtual CORBA::Any * pull (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        CosEventComm::Disconnected
      ));

    virtual CORBA::Any * try_pull (
        CORBA::Boolean_out has_event,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        CosEventComm::Disconnected
      ));

    virtual void disconnect_pull_supplier (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));

  };


#endif /* end #if !defined */

  
#if defined (ACE_HAS_USING_KEYWORD)
  // TIE class: Refer to CORBA v2.2, Section 20.34.4
  template <class T>
  class TAO_ORBSVCS_Export PullSupplier_tie : public PullSupplier
  {
  public:
    PullSupplier_tie (T &t);
    // the T& ctor
    PullSupplier_tie (T &t, PortableServer::POA_ptr poa);
    // ctor taking a POA
    PullSupplier_tie (T *tp, CORBA::Boolean release=1);
    // ctor taking pointer and an ownership flag
    PullSupplier_tie (T *tp, PortableServer::POA_ptr poa, CORBA::Boolean release=1);
    // ctor with T*, ownership flag and a POA
    ~PullSupplier_tie (void);
    // dtor
    
    // TIE specific functions
    T *_tied_object (void);
    // return the underlying object
    void _tied_object (T &obj);
    // set the underlying object
    void _tied_object (T *obj, CORBA::Boolean release=1);
    // set the underlying object and the ownership flag
    CORBA::Boolean _is_owner (void);
    // do we own it
    void _is_owner (CORBA::Boolean b);
    // set the ownership
    
    // overridden ServantBase operations
    PortableServer::POA_ptr _default_POA (
        CORBA::Environment &env = 
          TAO_default_environment ()
      );
    CORBA::Any * pull (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        CosEventComm::Disconnected
      ));

    CORBA::Any * try_pull (
        CORBA::Boolean_out has_event,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException,
        CosEventComm::Disconnected
      ));

    void disconnect_pull_supplier (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));

private:
    T *ptr_;
    PortableServer::POA_var poa_;
    CORBA::Boolean rel_;
    
    // copy and assignment are not allowed
    PullSupplier_tie (const PullSupplier_tie &);
    void operator= (const PullSupplier_tie &);
  };

#endif /* ACE_HAS_USING_KEYWORD */

  class PullConsumer;
  typedef PullConsumer *PullConsumer_ptr;
  class TAO_ORBSVCS_Export PullConsumer :  public virtual PortableServer::ServantBase
  {
  protected:
    PullConsumer (void);

  public:
    PullConsumer (const PullConsumer& rhs);
    virtual ~PullConsumer (void);


    virtual CORBA::Boolean _is_a (
        const char* logical_type_id,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual void* _downcast (
        const char* logical_type_id
      );

    static void _is_a_skel (
        CORBA::ServerRequest &req,
        void *obj,
        void *context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    static void _non_existent_skel (
        CORBA::ServerRequest &req,
        void *obj,
        void *context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual void _dispatch (
        CORBA::ServerRequest &_tao_req,
        void *_tao_context,
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    ::CosEventComm::PullConsumer *_this (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );

    virtual const char* _interface_repository_id (void) const;

    virtual void disconnect_pull_consumer (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      )) = 0;

    static void disconnect_pull_consumer_skel (
        CORBA::ServerRequest &_tao_req, 
        void *_tao_obj, 
        void *_tao_context, 
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      );


  };


#if !defined (_COSEVENTCOMM_PULLCONSUMER___THRU_POA_COLLOCATED_SH_)
#define _COSEVENTCOMM_PULLCONSUMER___THRU_POA_COLLOCATED_SH_

  class TAO_ORBSVCS_Export _tao_thru_poa_collocated_PullConsumer     : public virtual ::CosEventComm::PullConsumer
  {
  public:
    _tao_thru_poa_collocated_PullConsumer (
        TAO_Stub *stub
      );
    virtual CORBA::Boolean _is_a(
        const CORBA::Char *logical_type_id,
        CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
      );
    
    virtual CORBA::Boolean _non_existent(
        CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ()
      );
    
        virtual void disconnect_pull_consumer (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));

  };


#endif /* end #if !defined */

  
#if defined (ACE_HAS_USING_KEYWORD)
  // TIE class: Refer to CORBA v2.2, Section 20.34.4
  template <class T>
  class TAO_ORBSVCS_Export PullConsumer_tie : public PullConsumer
  {
  public:
    PullConsumer_tie (T &t);
    // the T& ctor
    PullConsumer_tie (T &t, PortableServer::POA_ptr poa);
    // ctor taking a POA
    PullConsumer_tie (T *tp, CORBA::Boolean release=1);
    // ctor taking pointer and an ownership flag
    PullConsumer_tie (T *tp, PortableServer::POA_ptr poa, CORBA::Boolean release=1);
    // ctor with T*, ownership flag and a POA
    ~PullConsumer_tie (void);
    // dtor
    
    // TIE specific functions
    T *_tied_object (void);
    // return the underlying object
    void _tied_object (T &obj);
    // set the underlying object
    void _tied_object (T *obj, CORBA::Boolean release=1);
    // set the underlying object and the ownership flag
    CORBA::Boolean _is_owner (void);
    // do we own it
    void _is_owner (CORBA::Boolean b);
    // set the ownership
    
    // overridden ServantBase operations
    PortableServer::POA_ptr _default_POA (
        CORBA::Environment &env = 
          TAO_default_environment ()
      );
    void disconnect_pull_consumer (
        CORBA::Environment &ACE_TRY_ENV = 
          TAO_default_environment ()
      )
      ACE_THROW_SPEC ((
        CORBA::SystemException
      ));

private:
    T *ptr_;
    PortableServer::POA_var poa_;
    CORBA::Boolean rel_;
    
    // copy and assignment are not allowed
    PullConsumer_tie (const PullConsumer_tie &);
    void operator= (const PullConsumer_tie &);
  };

#endif /* ACE_HAS_USING_KEYWORD */

}
TAO_NAMESPACE_CLOSE

#include "CosEventCommS_T.h"

#if defined (__ACE_INLINE__)
#include "CosEventCommS.i"
#endif /* defined INLINE */

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#pragma warning(pop)
#endif /* _MSC_VER */

#endif /* ifndef */
