// **********************************************************************
//
// Generated by the ORBacus IDL-to-C++ Translator
//
// Copyright (c) 2003
// IONA Technologies, Inc.
// Waltham, MA, USA
//
// All Rights Reserved
//
// **********************************************************************

// Version: 4.1.3

#ifndef __OB_OADProcessEndpoint_skel_h__
#define __OB_OADProcessEndpoint_skel_h__

#include <OB/OADProcessEndpoint.h>

#include <OB/IMRTypes_skel.h>

#ifndef OB_IMPORT
#   ifdef OB_DLL
#      define OB_IMPORT __declspec(dllimport)
#   else
#      define OB_IMPORT /**/
#   endif
#endif


#ifndef OB_INTEGER_VERSION
#   error No ORBacus version defined! Is <OB/CORBA.h> included?
#endif

#ifndef OB_NO_VERSION_CHECK
#   if (OB_INTEGER_VERSION != 4010300L)
#       error ORBacus version mismatch!
#   endif
#endif

//
// IDL:ooc.com/OAD:1.0
//
namespace POA_OAD
{

//
// IDL:ooc.com/OAD/ProcessEndpointManager:1.0
//
class ProcessEndpointManager : virtual public PortableServer::ServantBase
{
    ProcessEndpointManager(const ProcessEndpointManager&);
    void operator=(const ProcessEndpointManager&);

protected:

    //
    // IDL:ooc.com/OAD/ProcessEndpointManager/establish_link:1.0
    //
    void _OB_op_establish_link(OB::Upcall_ptr);

public:

    ProcessEndpointManager() { }

    virtual ::CORBA::Boolean _is_a(const char*)
        throw(::CORBA::SystemException);

    virtual ::CORBA::RepositoryId _primary_interface(const PortableServer::ObjectId&,
                                                     PortableServer::POA_ptr);

    OAD::ProcessEndpointManager_ptr _this();

    virtual OB::DirectStubImpl_ptr _OB_createDirectStubImpl(PortableServer::POA_ptr,
                                                            const PortableServer::ObjectId&);
    virtual void _OB_dispatch(OB::Upcall_ptr);

    //
    // IDL:ooc.com/OAD/ProcessEndpointManager/establish_link:1.0
    //
    virtual void establish_link(const char* server,
                                const char* id,
                                ::IMR::ProcessID pid,
                                ::OAD::ProcessEndpoint_ptr endpoint)
        throw(OAD::AlreadyLinked,
              ::CORBA::SystemException) = 0;
};

//
// IDL:ooc.com/OAD/ProcessEndpoint:1.0
//
class ProcessEndpoint : virtual public PortableServer::ServantBase
{
    ProcessEndpoint(const ProcessEndpoint&);
    void operator=(const ProcessEndpoint&);

protected:

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/reestablish_link:1.0
    //
    void _OB_op_reestablish_link(OB::Upcall_ptr);

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/stop:1.0
    //
    void _OB_op_stop(OB::Upcall_ptr);

public:

    ProcessEndpoint() { }

    virtual ::CORBA::Boolean _is_a(const char*)
        throw(::CORBA::SystemException);

    virtual ::CORBA::RepositoryId _primary_interface(const PortableServer::ObjectId&,
                                                     PortableServer::POA_ptr);

    OAD::ProcessEndpoint_ptr _this();

    virtual OB::DirectStubImpl_ptr _OB_createDirectStubImpl(PortableServer::POA_ptr,
                                                            const PortableServer::ObjectId&);
    virtual void _OB_dispatch(OB::Upcall_ptr);

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/reestablish_link:1.0
    //
    virtual void reestablish_link(::OAD::ProcessEndpointManager_ptr endpoint)
        throw(::CORBA::SystemException) = 0;

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/stop:1.0
    //
    virtual void stop()
        throw(::CORBA::SystemException) = 0;
};

} // End of namespace POA_OAD

//
// IDL:ooc.com/OAD:1.0
//
namespace OBDirectStubImpl_OAD
{

//
// IDL:ooc.com/OAD/ProcessEndpointManager:1.0
//
class ProcessEndpointManager : virtual public OBStubImpl_OAD::ProcessEndpointManager,
                               virtual public OB::DirectStubImpl
{
    ProcessEndpointManager(const ProcessEndpointManager&);
    void operator=(const ProcessEndpointManager&);

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    ProcessEndpointManager() { }

#endif

    ProcessEndpointManager(PortableServer::POA_ptr,
                           const PortableServer::ObjectId&,
                           PortableServer::ServantBase*);

    friend class POA_OAD::ProcessEndpointManager;

public:

    //
    // IDL:ooc.com/OAD/ProcessEndpointManager/establish_link:1.0
    //
    virtual void establish_link(const char* server,
                                const char* id,
                                ::IMR::ProcessID pid,
                                ::OAD::ProcessEndpoint_ptr endpoint);
};

//
// IDL:ooc.com/OAD/ProcessEndpoint:1.0
//
class ProcessEndpoint : virtual public OBStubImpl_OAD::ProcessEndpoint,
                        virtual public OB::DirectStubImpl
{
    ProcessEndpoint(const ProcessEndpoint&);
    void operator=(const ProcessEndpoint&);

protected:

#ifdef HAVE_VCPLUSPLUS_BUGS

    ProcessEndpoint() { }

#endif

    ProcessEndpoint(PortableServer::POA_ptr,
                    const PortableServer::ObjectId&,
                    PortableServer::ServantBase*);

    friend class POA_OAD::ProcessEndpoint;

public:

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/reestablish_link:1.0
    //
    virtual void reestablish_link(::OAD::ProcessEndpointManager_ptr endpoint);

    //
    // IDL:ooc.com/OAD/ProcessEndpoint/stop:1.0
    //
    virtual void stop();
};

} // End of namespace OBDirectStubImpl_OAD

#endif
