// **********************************************************************
//
// Generated by the ORBacus IDL-to-C++ Translator
//
// Copyright (c) 1998
// Object-Oriented Concepts, Inc.
// Billerica, MA, USA
//
// Copyright (c) 1998
// Object-Oriented Concepts GmbH
// Ettlingen, Germany
//
// All Rights Reserved
//
// **********************************************************************

// Version: 3.0.1
// License: non-commercial

#include <OB/CORBA.h>
#include "toveinap_skel.h"

//
// IDL:inap/scpRequired:1.0
//
OBDispatchStatus
toveinap_scpRequired_skel::_OB_dispatch(const char* _ob_op,
                                    OBBuffer& _ob_buf,
                                    bool _ob_sw,
                                    CORBA_ULong _ob_offIn,
                                    CORBA_ULong _ob_offOut)
{
    if(strcmp(_ob_op, "selectRoute") == 0)
    {
        const CORBA_Octet* _ob_co = _ob_buf.data + _ob_offIn;
        toveinap_SelectRouteArgType _ob_a0;
        OBUnmarshal(_ob_a0, _ob_co, _ob_sw);

        try
        {
            selectRoute(_ob_a0);

            CORBA_ULong _ob_cnt = _ob_offOut;

            _ob_buf.alloc(_ob_cnt);

            return OBDispatchStatusOK;
        }
        catch(const toveinap_systemFailure& _ob_except)
        {
            CORBA_ULong _ob_cnt = _ob_offOut;
            OBMarshalCount(_ob_except, _ob_cnt);

            _ob_buf.alloc(_ob_cnt);
            CORBA_Octet* _ob_o = _ob_buf.data + _ob_offOut;
            OBMarshal(_ob_except, _ob_o);

            return OBDispatchStatusExcept;
        }
    }
    else if(strcmp(_ob_op, "requestReportBCSMEvent") == 0)
    {
        const CORBA_Octet* _ob_co = _ob_buf.data + _ob_offIn;
        toveinap_RequestReportBCSMEventArgType _ob_a0;
        OBUnmarshal(_ob_a0, _ob_co, _ob_sw);

        try
        {
            requestReportBCSMEvent(_ob_a0);

            CORBA_ULong _ob_cnt = _ob_offOut;

            _ob_buf.alloc(_ob_cnt);

            return OBDispatchStatusOK;
        }
        catch(const toveinap_missingParameter& _ob_except)
        {
            CORBA_ULong _ob_cnt = _ob_offOut;
            OBMarshalCount(_ob_except, _ob_cnt);

            _ob_buf.alloc(_ob_cnt);
            CORBA_Octet* _ob_o = _ob_buf.data + _ob_offOut;
            OBMarshal(_ob_except, _ob_o);

            return OBDispatchStatusExcept;
        }
        catch(const toveinap_parameterOutOfRange& _ob_except)
        {
            CORBA_ULong _ob_cnt = _ob_offOut;
            OBMarshalCount(_ob_except, _ob_cnt);

            _ob_buf.alloc(_ob_cnt);
            CORBA_Octet* _ob_o = _ob_buf.data + _ob_offOut;
            OBMarshal(_ob_except, _ob_o);

            return OBDispatchStatusExcept;
        }
        catch(const toveinap_systemFailure& _ob_except)
        {
            CORBA_ULong _ob_cnt = _ob_offOut;
            OBMarshalCount(_ob_except, _ob_cnt);

            _ob_buf.alloc(_ob_cnt);
            CORBA_Octet* _ob_o = _ob_buf.data + _ob_offOut;
            OBMarshal(_ob_except, _ob_o);

            return OBDispatchStatusExcept;
        }
    }
    else if(strcmp(_ob_op, "continue") == 0)
    {
        const CORBA_Octet* _ob_co = _ob_buf.data + _ob_offIn;
        toveinap_ContinueArgType _ob_a0;
        OBUnmarshal(_ob_a0, _ob_co, _ob_sw);

        _continue(_ob_a0);

        CORBA_ULong _ob_cnt = _ob_offOut;

        _ob_buf.alloc(_ob_cnt);

        return OBDispatchStatusOK;
    }
    else
        return CORBA_Object_skel::_OB_dispatch(_ob_op, _ob_buf, _ob_sw, _ob_offIn, _ob_offOut);
}

//
// IDL:inap/scpSupported:1.0
//
OBDispatchStatus
toveinap_scpSupported_skel::_OB_dispatch(const char* _ob_op,
                                     OBBuffer& _ob_buf,
                                     bool _ob_sw,
                                     CORBA_ULong _ob_offIn,
                                     CORBA_ULong _ob_offOut)
{
    if(strcmp(_ob_op, "initialDP") == 0)
    {
        const CORBA_Octet* _ob_co = _ob_buf.data + _ob_offIn;
        toveinap_InitialDPArgType _ob_a0;
        OBUnmarshal(_ob_a0, _ob_co, _ob_sw);

        try
        {
            initialDP(_ob_a0);

            CORBA_ULong _ob_cnt = _ob_offOut;

            _ob_buf.alloc(_ob_cnt);

            return OBDispatchStatusOK;
        }
        catch(const toveinap_missingCustomerRecord& _ob_except)
        {
            CORBA_ULong _ob_cnt = _ob_offOut;
            OBMarshalCount(_ob_except, _ob_cnt);

            _ob_buf.alloc(_ob_cnt);
            CORBA_Octet* _ob_o = _ob_buf.data + _ob_offOut;
            OBMarshal(_ob_except, _ob_o);

            return OBDispatchStatusExcept;
        }
        catch(const toveinap_systemFailure& _ob_except)
        {
            CORBA_ULong _ob_cnt = _ob_offOut;
            OBMarshalCount(_ob_except, _ob_cnt);

            _ob_buf.alloc(_ob_cnt);
            CORBA_Octet* _ob_o = _ob_buf.data + _ob_offOut;
            OBMarshal(_ob_except, _ob_o);

            return OBDispatchStatusExcept;
        }
    }
    else if(strcmp(_ob_op, "eventReportBCSM") == 0)
    {
        const CORBA_Octet* _ob_co = _ob_buf.data + _ob_offIn;
        toveinap_EventReportBCSMArgType _ob_a0;
        OBUnmarshal(_ob_a0, _ob_co, _ob_sw);

        eventReportBCSM(_ob_a0);

        CORBA_ULong _ob_cnt = _ob_offOut;

        _ob_buf.alloc(_ob_cnt);

        return OBDispatchStatusOK;
    }
    else
        return CORBA_Object_skel::_OB_dispatch(_ob_op, _ob_buf, _ob_sw, _ob_offIn, _ob_offOut);
}
