ptphonehookswitch.cpp
来自「基于sipfoundy 公司开发的sipx协议API」· C++ 代码 · 共 233 行
CPP
233 行
//// Copyright (C) 2004, 2005 Pingtel Corp.// //// $$//////////////////////////////////////////////////////////////////////////////// SYSTEM INCLUDES#include <assert.h>// APPLICATION INCLUDES#include "ptapi/PtPhoneHookswitch.h"#include "ptapi/PtCall.h"#include "ptapi/PtProvider.h"#include "tao/TaoClientTask.h"#include "tao/TaoEvent.h"// EXTERNAL FUNCTIONS// EXTERNAL VARIABLES// CONSTANTS// STATIC VARIABLE INITIALIZATIONS/* //////////////////////////// PUBLIC //////////////////////////////////// *//* ============================ CREATORS ================================== */// ConstructorPtPhoneHookswitch::PtPhoneHookswitch(): PtComponent(PtComponent::HOOKSWITCH), mState(ON_HOOK), mpProvider(0), mpCall(0){ mTimeOut = OsTime(PT_CONST_EVENT_WAIT_TIMEOUT, 0); mpEventMgr = OsProtectEventMgr::getEventMgr();}PtPhoneHookswitch::PtPhoneHookswitch(PtProvider*& rpProvider): PtComponent(PtComponent::HOOKSWITCH), mState(ON_HOOK), mpProvider(0), mpCall(0){ mTimeOut = OsTime(PT_CONST_EVENT_WAIT_TIMEOUT, 0); mpEventMgr = OsProtectEventMgr::getEventMgr();}PtPhoneHookswitch::PtPhoneHookswitch(TaoClientTask *pClient): PtComponent(PtComponent::HOOKSWITCH), mState(ON_HOOK), mpProvider(0), mpCall(0){ mpClient = pClient; if (mpClient && !(mpClient->isStarted())) { mpClient->start(); } mTimeOut = OsTime(PT_CONST_EVENT_WAIT_TIMEOUT, 0); mpEventMgr = OsProtectEventMgr::getEventMgr();}// Copy constructorPtPhoneHookswitch::PtPhoneHookswitch(const PtPhoneHookswitch& rPtPhoneHookswitch): PtComponent(rPtPhoneHookswitch){ mpClient = rPtPhoneHookswitch.mpClient; mState = rPtPhoneHookswitch.mState; mpProvider = rPtPhoneHookswitch.mpProvider; mpCall = rPtPhoneHookswitch.mpCall; mTimeOut = OsTime(PT_CONST_EVENT_WAIT_TIMEOUT, 0); mpEventMgr = OsProtectEventMgr::getEventMgr();}// DestructorPtPhoneHookswitch::~PtPhoneHookswitch(){}/* ============================ MANIPULATORS ============================== */// Assignment operatorPtPhoneHookswitch&PtPhoneHookswitch::operator=(const PtPhoneHookswitch& rhs){ if (this == &rhs) // handle the assignment to self case return *this; mpClient = rhs.mpClient; mState = rhs.mState; mpProvider = rhs.mpProvider; mpCall = rhs.mpCall; if (mpClient && !(mpClient->isStarted())) { mpClient->start(); } mTimeOut = rhs.mTimeOut; return *this;}PtStatus PtPhoneHookswitch::setHookswitchState(int state){ char arg[20]; sprintf(arg, "%d", state); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PHONECOMPONENT, TaoMessage::HOOKSWITCH_SET_STATE, 0, (TaoObjHandle)0, (TaoObjHandle)pe, 1, arg); mpClient->sendRequest(msg); int rc; if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut)) { mpClient->resetConnectionSocket(msg.getMsgID()); // If the event has already been signalled, clean up if(OS_ALREADY_SIGNALED == pe->signal(0)) { mpEventMgr->release(pe); } return PT_BUSY; } pe->getEventData((int &)rc);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::HOOKSWITCH_SET_STATE);#endif mpEventMgr->release(pe); return PT_SUCCESS;}/* ============================ ACCESSORS ================================= */PtStatus PtPhoneHookswitch::getHookswitchState(int& state){ OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PHONECOMPONENT, TaoMessage::HOOKSWITCH_SET_STATE, 0, (TaoObjHandle)0, (TaoObjHandle)pe, 0, ""); mpClient->sendRequest(msg); if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut)) { mpClient->resetConnectionSocket(msg.getMsgID()); // If the event has already been signalled, clean up if(OS_ALREADY_SIGNALED == pe->signal(0)) { mpEventMgr->release(pe); } return PT_BUSY; } pe->getEventData((int &)state);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::HOOKSWITCH_SET_STATE);#endif mpEventMgr->release(pe); return PT_SUCCESS;}PtStatus PtPhoneHookswitch::getCall(PtCall& rCall){ OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PHONECOMPONENT, TaoMessage::HOOKSWITCH_GET_CALL, 0, (TaoObjHandle)0, (TaoObjHandle)pe, 0, ""); mpClient->sendRequest(msg); int rc; UtlString callId; if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut)) { mpClient->resetConnectionSocket(msg.getMsgID()); // If the event has already been signalled, clean up if(OS_ALREADY_SIGNALED == pe->signal(0)) { mpEventMgr->release(pe); } return PT_BUSY; } pe->getEventData((int &)rc); pe->getStringData(callId);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::HOOKSWITCH_GET_CALL);#endif mpEventMgr->release(pe); rCall = PtCall(mpClient, callId.data()); return PT_SUCCESS;}/* ============================ INQUIRY =================================== *//* //////////////////////////// PROTECTED ///////////////////////////////// *//* //////////////////////////// PRIVATE /////////////////////////////////// *//* ============================ FUNCTIONS ================================= */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?