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

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


#include <OB/OCIClient.h>
#include <OB/Current.h>
#include <OB/OCI_fwd.h>

#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

namespace OBStubImpl_OCI
{

} // End of namespace OBStubImpl_OCI

namespace OBStubImpl_OCI
{

} // End of namespace OBStubImpl_OCI

//
// IDL:ooc.com/OCI:1.0
//
namespace OCI
{

//
// IDL:ooc.com/OCI/Acceptor:1.0
//
class Acceptor : virtual public ::CORBA::Object
{
    Acceptor(const Acceptor&);
    void operator=(const Acceptor&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    Acceptor() { }
    virtual ~Acceptor() { }

    typedef Acceptor_ptr _ptr_type;
    typedef Acceptor_var _var_type;

    static inline Acceptor_ptr
    _duplicate(Acceptor_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline Acceptor_ptr
    _nil()
    {
        return 0;
    }

    static Acceptor_ptr _narrow(::CORBA::Object_ptr);

    static Acceptor_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:ooc.com/OCI/Acceptor/id:1.0
    //
    virtual PluginId id() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/tag:1.0
    //
    virtual ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/handle:1.0
    //
    virtual Handle handle() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/close:1.0
    //
    virtual void close() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/shutdown:1.0
    //
    virtual void shutdown() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/listen:1.0
    //
    virtual void listen() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/accept:1.0
    //
    virtual Transport_ptr accept(::CORBA::Boolean block) = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/connect_self:1.0
    //
    virtual Transport_ptr connect_self() = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/add_profiles:1.0
    //
    virtual void add_profiles(const ProfileInfo& profile_info,
                              IOR& ref) = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/get_local_profiles:1.0
    //
    virtual ProfileInfoSeq* get_local_profiles(const IOR& ref) = 0;

    //
    // IDL:ooc.com/OCI/Acceptor/get_info:1.0
    //
    virtual AcceptorInfo_ptr get_info() = 0;
};

//
// IDL:ooc.com/OCI/AcceptorSeq:1.0
//
class OBUnique_AcceptorSeq { };

typedef OB::ObjSeq< Acceptor, OBUnique_AcceptorSeq > AcceptorSeq;
typedef OB::SeqVar< OB::ObjSeq< Acceptor, OBUnique_AcceptorSeq > > AcceptorSeq_var;
typedef OB::SeqOut< OB::ObjSeq< Acceptor, OBUnique_AcceptorSeq > > AcceptorSeq_out;

//
// IDL:ooc.com/OCI/AcceptorInfo:1.0
//
class AcceptorInfo : virtual public ::CORBA::Object
{
    AcceptorInfo(const AcceptorInfo&);
    void operator=(const AcceptorInfo&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    AcceptorInfo() { }
    virtual ~AcceptorInfo() { }

    typedef AcceptorInfo_ptr _ptr_type;
    typedef AcceptorInfo_var _var_type;

    static inline AcceptorInfo_ptr
    _duplicate(AcceptorInfo_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline AcceptorInfo_ptr
    _nil()
    {
        return 0;
    }

    static AcceptorInfo_ptr _narrow(::CORBA::Object_ptr);

    static AcceptorInfo_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:ooc.com/OCI/AcceptorInfo/id:1.0
    //
    virtual PluginId id() = 0;

    //
    // IDL:ooc.com/OCI/AcceptorInfo/tag:1.0
    //
    virtual ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/AcceptorInfo/describe:1.0
    //
    virtual char* describe() = 0;

    //
    // IDL:ooc.com/OCI/AcceptorInfo/add_accept_cb:1.0
    //
    virtual void add_accept_cb(AcceptCB_ptr cb) = 0;

    //
    // IDL:ooc.com/OCI/AcceptorInfo/remove_accept_cb:1.0
    //
    virtual void remove_accept_cb(AcceptCB_ptr cb) = 0;
};

//
// IDL:ooc.com/OCI/AcceptCB:1.0
//
class AcceptCB : virtual public ::CORBA::Object
{
    AcceptCB(const AcceptCB&);
    void operator=(const AcceptCB&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    AcceptCB() { }
    virtual ~AcceptCB() { }

    typedef AcceptCB_ptr _ptr_type;
    typedef AcceptCB_var _var_type;

    static inline AcceptCB_ptr
    _duplicate(AcceptCB_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline AcceptCB_ptr
    _nil()
    {
        return 0;
    }

    static AcceptCB_ptr _narrow(::CORBA::Object_ptr);

    static AcceptCB_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:ooc.com/OCI/AcceptCB/accept_cb:1.0
    //
    virtual void accept_cb(TransportInfo_ptr transport_info) = 0;
};

//
// IDL:ooc.com/OCI/AcceptCBSeq:1.0
//
class OBUnique_AcceptCBSeq { };

typedef OB::ObjSeq< AcceptCB, OBUnique_AcceptCBSeq > AcceptCBSeq;
typedef OB::SeqVar< OB::ObjSeq< AcceptCB, OBUnique_AcceptCBSeq > > AcceptCBSeq_var;
typedef OB::SeqOut< OB::ObjSeq< AcceptCB, OBUnique_AcceptCBSeq > > AcceptCBSeq_out;

//
// IDL:ooc.com/OCI/InvalidParam:1.0
//
struct InvalidParam : public ::CORBA::UserException
{
    InvalidParam() { }
    InvalidParam(const InvalidParam&);
    InvalidParam& operator=(const InvalidParam&);

    static InvalidParam* _downcast(::CORBA::Exception*);
    static const InvalidParam* _downcast(const ::CORBA::Exception*);
    virtual const char* _name() const;
    virtual void _raise() const { throw *this; }
    virtual const char* _rep_id() const;
    virtual char* _to_string() const;

    virtual ::CORBA::Exception* _OB_clone() const;
    virtual void _OB_insertInAny(::CORBA::Any&);

    OB::StrForStruct reason;

    InvalidParam(const char*);

    virtual void _OB_marshal(OB::OutputStreamImpl*) const;
    static void _OB_unmarshal(InvalidParam&, OB::InputStreamImpl*);
};

//
// IDL:ooc.com/OCI/AccFactory:1.0
//
class AccFactory : virtual public ::CORBA::Object
{
    AccFactory(const AccFactory&);
    void operator=(const AccFactory&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    AccFactory() { }
    virtual ~AccFactory() { }

    typedef AccFactory_ptr _ptr_type;
    typedef AccFactory_var _var_type;

    static inline AccFactory_ptr
    _duplicate(AccFactory_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline AccFactory_ptr
    _nil()
    {
        return 0;
    }

    static AccFactory_ptr _narrow(::CORBA::Object_ptr);

    static AccFactory_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:ooc.com/OCI/AccFactory/id:1.0
    //
    virtual PluginId id() = 0;

    //
    // IDL:ooc.com/OCI/AccFactory/tag:1.0
    //
    virtual ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/AccFactory/create_acceptor:1.0
    //
    virtual Acceptor_ptr create_acceptor(const ParamSeq& params) = 0;

    //
    // IDL:ooc.com/OCI/AccFactory/change_key:1.0
    //
    virtual void change_key(::IOP::IOR& ior,
                            const ObjectKey& key) = 0;

    //
    // IDL:ooc.com/OCI/AccFactory/get_info:1.0
    //
    virtual AccFactoryInfo_ptr get_info() = 0;
};

//
// IDL:ooc.com/OCI/AccFactorySeq:1.0
//
class OBUnique_AccFactorySeq { };

typedef OB::ObjSeq< AccFactory, OBUnique_AccFactorySeq > AccFactorySeq;
typedef OB::SeqVar< OB::ObjSeq< AccFactory, OBUnique_AccFactorySeq > > AccFactorySeq_var;
typedef OB::SeqOut< OB::ObjSeq< AccFactory, OBUnique_AccFactorySeq > > AccFactorySeq_out;

//
// IDL:ooc.com/OCI/AccFactoryInfo:1.0
//
class AccFactoryInfo : virtual public ::CORBA::Object
{
    AccFactoryInfo(const AccFactoryInfo&);
    void operator=(const AccFactoryInfo&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    AccFactoryInfo() { }
    virtual ~AccFactoryInfo() { }

    typedef AccFactoryInfo_ptr _ptr_type;
    typedef AccFactoryInfo_var _var_type;

    static inline AccFactoryInfo_ptr
    _duplicate(AccFactoryInfo_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline AccFactoryInfo_ptr
    _nil()
    {
        return 0;
    }

    static AccFactoryInfo_ptr _narrow(::CORBA::Object_ptr);

    static AccFactoryInfo_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:ooc.com/OCI/AccFactoryInfo/id:1.0
    //
    virtual PluginId id() = 0;

    //
    // IDL:ooc.com/OCI/AccFactoryInfo/tag:1.0
    //
    virtual ProfileId tag() = 0;

    //
    // IDL:ooc.com/OCI/AccFactoryInfo/describe:1.0
    //
    virtual char* describe() = 0;
};

//
// IDL:ooc.com/OCI/AccFactoryRegistry:1.0
//
class AccFactoryRegistry : virtual public ::CORBA::Object
{
    AccFactoryRegistry(const AccFactoryRegistry&);
    void operator=(const AccFactoryRegistry&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    AccFactoryRegistry() { }
    virtual ~AccFactoryRegistry() { }

    typedef AccFactoryRegistry_ptr _ptr_type;
    typedef AccFactoryRegistry_var _var_type;

    static inline AccFactoryRegistry_ptr
    _duplicate(AccFactoryRegistry_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline AccFactoryRegistry_ptr
    _nil()
    {
        return 0;
    }

    static AccFactoryRegistry_ptr _narrow(::CORBA::Object_ptr);

    static AccFactoryRegistry_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:ooc.com/OCI/AccFactoryRegistry/add_factory:1.0
    //
    virtual void add_factory(AccFactory_ptr factory) = 0;

    //
    // IDL:ooc.com/OCI/AccFactoryRegistry/get_factory:1.0
    //
    virtual AccFactory_ptr get_factory(const char* id) = 0;

    //
    // IDL:ooc.com/OCI/AccFactoryRegistry/get_factories:1.0
    //
    virtual AccFactorySeq* get_factories() = 0;
};

//
// IDL:ooc.com/OCI/Current:1.0
//
class Current : virtual public ::CORBA::Current
{
    Current(const Current&);
    void operator=(const Current&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    Current() { }
    virtual ~Current() { }

    typedef Current_ptr _ptr_type;
    typedef Current_var _var_type;

    static inline Current_ptr
    _duplicate(Current_ptr p)
    {
        if(p)
            p -> _add_ref();
        return p;
    }

    static inline Current_ptr
    _nil()
    {
        return 0;
    }

    static Current_ptr _narrow(::CORBA::Object_ptr);

    static Current_ptr _narrow(::CORBA::AbstractBase_ptr);


    //
    // IDL:ooc.com/OCI/Current/get_oci_transport_info:1.0
    //
    virtual TransportInfo_ptr get_oci_transport_info() = 0;

    //
    // IDL:ooc.com/OCI/Current/get_oci_acceptor_info:1.0
    //
    virtual AcceptorInfo_ptr get_oci_acceptor_info() = 0;
};

} // End of namespace OCI

//
// IDL:ooc.com/OCI:1.0
//
namespace OBProxy_OCI
{

} // End of namespace OBProxy_OCI

//
// IDL:ooc.com/OCI:1.0
//
namespace OBStubImpl_OCI
{

} // End of namespace OBStubImpl_OCI

//
// IDL:ooc.com/OCI:1.0
//
namespace OBMarshalStubImpl_OCI
{

} // End of namespace OBMarshalStubImpl_OCI

//
// IDL:ooc.com/OCI:1.0
//
namespace OBV_OCI
{

} // End of namespace OBV_OCI

//
// IDL:ooc.com/OCI/Acceptor:1.0
//
namespace CORBA
{

inline void
release(::OCI::Acceptor_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OCI::Acceptor_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

//
// IDL:ooc.com/OCI/AcceptorInfo:1.0
//
namespace CORBA
{

inline void
release(::OCI::AcceptorInfo_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OCI::AcceptorInfo_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

//
// IDL:ooc.com/OCI/AcceptCB:1.0
//
namespace CORBA
{

inline void
release(::OCI::AcceptCB_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OCI::AcceptCB_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

//
// IDL:ooc.com/OCI/AccFactory:1.0
//
namespace CORBA
{

inline void
release(::OCI::AccFactory_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OCI::AccFactory_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

//
// IDL:ooc.com/OCI/AccFactoryInfo:1.0
//
namespace CORBA
{

inline void
release(::OCI::AccFactoryInfo_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OCI::AccFactoryInfo_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

//
// IDL:ooc.com/OCI/AccFactoryRegistry:1.0
//
namespace CORBA
{

inline void
release(::OCI::AccFactoryRegistry_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OCI::AccFactoryRegistry_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

//
// IDL:ooc.com/OCI/Current:1.0
//
namespace CORBA
{

inline void
release(::OCI::Current_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::OCI::Current_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

#endif
