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

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


#include <OB/Policy.h>
#include <OB/PIRequest.h>
#include <OB/PIServer_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_PortableInterceptor
{

} // End of namespace OBStubImpl_PortableInterceptor

namespace OBStubImpl_PortableInterceptor
{

} // End of namespace OBStubImpl_PortableInterceptor

//
// IDL:omg.org/PortableInterceptor:1.0
//
namespace PortableInterceptor
{

//
// IDL:omg.org/PortableInterceptor/ServerRequestInfo:1.0
//
class ServerRequestInfo : virtual public ::PortableInterceptor::RequestInfo
{
    ServerRequestInfo(const ServerRequestInfo&);
    void operator=(const ServerRequestInfo&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    ServerRequestInfo() { }
    virtual ~ServerRequestInfo() { }

    typedef ServerRequestInfo_ptr _ptr_type;
    typedef ServerRequestInfo_var _var_type;

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

    static inline ServerRequestInfo_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/sending_exception:1.0
    //
    virtual ::CORBA::Any* sending_exception() = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/object_id:1.0
    //
    virtual ::CORBA::OctetSeq* object_id() = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/adapter_id:1.0
    //
    virtual ::CORBA::OctetSeq* adapter_id() = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/target_most_derived_interface:1.0
    //
    virtual ::CORBA::RepositoryId target_most_derived_interface() = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/server_id:1.0
    //
    virtual ServerId server_id() = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/orb_id:1.0
    //
    virtual ORBId orb_id() = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/adapter_name:1.0
    //
    virtual AdapterName* adapter_name() = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/get_server_policy:1.0
    //
    virtual ::CORBA::Policy_ptr get_server_policy(::CORBA::PolicyType type) = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/set_slot:1.0
    //
    virtual void set_slot(SlotId id,
                          const ::CORBA::Any& data) = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/target_is_a:1.0
    //
    virtual ::CORBA::Boolean target_is_a(const char* id) = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInfo/add_reply_service_context:1.0
    //
    virtual void add_reply_service_context(const ::IOP::ServiceContext& service_context,
                                           ::CORBA::Boolean addReplace) = 0;
};

//
// IDL:omg.org/PortableInterceptor/ServerRequestInterceptor:1.0
//
class ServerRequestInterceptor : virtual public ::PortableInterceptor::Interceptor
{
    ServerRequestInterceptor(const ServerRequestInterceptor&);
    void operator=(const ServerRequestInterceptor&);

protected:

    static OB_IMPORT const char* ids_[];

public:

    ServerRequestInterceptor() { }
    virtual ~ServerRequestInterceptor() { }

    typedef ServerRequestInterceptor_ptr _ptr_type;
    typedef ServerRequestInterceptor_var _var_type;

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

    static inline ServerRequestInterceptor_ptr
    _nil()
    {
        return 0;
    }

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

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


    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInterceptor/receive_request_service_contexts:1.0
    //
    virtual void receive_request_service_contexts(ServerRequestInfo_ptr ri) = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInterceptor/receive_request:1.0
    //
    virtual void receive_request(ServerRequestInfo_ptr ri) = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInterceptor/send_reply:1.0
    //
    virtual void send_reply(ServerRequestInfo_ptr ri) = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInterceptor/send_exception:1.0
    //
    virtual void send_exception(ServerRequestInfo_ptr ri) = 0;

    //
    // IDL:omg.org/PortableInterceptor/ServerRequestInterceptor/send_other:1.0
    //
    virtual void send_other(ServerRequestInfo_ptr ri) = 0;
};

} // End of namespace PortableInterceptor

//
// IDL:omg.org/PortableInterceptor:1.0
//
namespace OBProxy_PortableInterceptor
{

} // End of namespace OBProxy_PortableInterceptor

//
// IDL:omg.org/PortableInterceptor:1.0
//
namespace OBStubImpl_PortableInterceptor
{

} // End of namespace OBStubImpl_PortableInterceptor

//
// IDL:omg.org/PortableInterceptor:1.0
//
namespace OBMarshalStubImpl_PortableInterceptor
{

} // End of namespace OBMarshalStubImpl_PortableInterceptor

//
// IDL:omg.org/PortableInterceptor:1.0
//
namespace OBV_PortableInterceptor
{

} // End of namespace OBV_PortableInterceptor

//
// IDL:omg.org/PortableInterceptor/ServerRequestInfo:1.0
//
namespace CORBA
{

inline void
release(::PortableInterceptor::ServerRequestInfo_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::PortableInterceptor::ServerRequestInfo_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

void operator<<=(::CORBA::Any&, PortableInterceptor::ServerRequestInfo_ptr*);
void operator<<=(::CORBA::Any&, PortableInterceptor::ServerRequestInfo_ptr);
CORBA::Boolean operator>>=(const ::CORBA::Any&, PortableInterceptor::ServerRequestInfo_ptr&);

inline void
operator<<=(::CORBA::Any_var& any, PortableInterceptor::ServerRequestInfo_ptr* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, PortableInterceptor::ServerRequestInfo_ptr val)
{
    any.inout() <<= val;
}

inline CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, PortableInterceptor::ServerRequestInfo_ptr& val)
{
    return any.in() >>= val;
}

//
// IDL:omg.org/PortableInterceptor/ServerRequestInterceptor:1.0
//
namespace CORBA
{

inline void
release(::PortableInterceptor::ServerRequestInterceptor_ptr p)
{
    if(p)
        p -> _remove_ref();
}

inline Boolean
is_nil(::PortableInterceptor::ServerRequestInterceptor_ptr p)
{
    return p == 0;
}

} // End of namespace CORBA

void operator<<=(::CORBA::Any&, PortableInterceptor::ServerRequestInterceptor_ptr*);
void operator<<=(::CORBA::Any&, PortableInterceptor::ServerRequestInterceptor_ptr);
CORBA::Boolean operator>>=(const ::CORBA::Any&, PortableInterceptor::ServerRequestInterceptor_ptr&);

inline void
operator<<=(::CORBA::Any_var& any, PortableInterceptor::ServerRequestInterceptor_ptr* val)
{
    any.inout() <<= val;
}

inline void
operator<<=(::CORBA::Any_var& any, PortableInterceptor::ServerRequestInterceptor_ptr val)
{
    any.inout() <<= val;
}

inline CORBA::Boolean
operator>>=(const ::CORBA::Any_var& any, PortableInterceptor::ServerRequestInterceptor_ptr& val)
{
    return any.in() >>= val;
}

#endif
