//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project/CC
//
//File: ccinadapter.cpp
//
//Version: $Revision: 1.7 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/11/12 15:10:05 $
//
//Organisation:
//      University of Technology
// 
//Author:
//      Pasi Nummisalo
//
//Description:
//     Adapter for CORBA INAP messages.
//
//Copyright:
//     University of Technology
//     Laboratory of Telecommunications and Multimedia 
//      
//Licence:
//     
//
//History:
//


#ifndef CC_IN_ADAPTER_H
#define CC_IN_ADAPTER_H


#include "ccprotocol.h"
#include "pf/adapter.h"
#include "toveinap_skel.h"


class ccINadapter : public toveinap_SSF_SCF_initiator_skel, public pfAdapter
{
    public:
        //static ccINadapter *instance(void);

        ccINadapter(const ccProtocol *protocol_);
        virtual ~ccINadapter(void);

        // LifeCycle
        virtual CosLifeCycle_LifeCycleObject_ptr copy(
            CosLifeCycle_FactoryFinder_ptr there,
            const CosLifeCycle_Criteria& the_criteria);
 
        virtual void move(CosLifeCycle_FactoryFinder_ptr there,
                          const CosLifeCycle_Criteria& the_criteria);

        virtual void remove();

        // TcUser
        virtual void setParameters(TcSignaling_TcPduProvider_ptr stack,
                                   TcSignaling_DialogId dialogId);
        
        virtual void abort_association(const char* a_id);
        
        virtual void abort_association_with_data(
            const TcSignaling_AbortValue& abort_value,
            const char* a_id);
        
        virtual void end_association(const char* a_id);
        
        virtual void new_association(TcSignaling_TcUser_ptr initiator,
                                     const char* a_id);
        
        virtual void new_association_with_dialogdata(
            TcSignaling_TcUser_ptr initiator,
            const char* a_id,
            const char* protocol_version,
            const TcSignaling_DialogUserData& d_u_d);

        virtual TcSignaling_TcContextSetting tc_context_setting();
     
        // INAP
        virtual void connect(const toveinap_ConnectArgType& ConnectArg,
                             TcSignaling_TcContext& ctext);

        virtual void releaseCall(
            const toveinap_ReleaseCallArgType& releaseCallArg,
            TcSignaling_TcContext& ctext);

        virtual void requestReportBCSMEvent(
            const toveinap_RequestReportBCSMEventArgType& 
            requestReportBCSMEventArg, TcSignaling_TcContext& ctext);

        virtual void selectRoute(
            const toveinap_SelectRouteArgType& selectRouteArg,
            TcSignaling_TcContext& ctext);
        
        virtual void _continue(TcSignaling_TcContext& ctext);

        /*
        protected:
        ccINadapter(ccProtocol *protocol_);
        virtual ~ccINadapter(void);

        virtual int noReference(void) const;
        */

    private:
        //static ccINadapter *_only;
        ccProtocol *_protocol;
         
};


#endif // CC_IN_ADAPTER_H













