📄 taoterminaladaptor.cpp
字号:
//// Copyright (C) 2004, 2005 Pingtel Corp.// //// $$//////////////////////////////////////////////////////////////////////////////#include <assert.h>#ifdef TEST#include "utl/UtlMemCheck.h"#endif#ifdef __pingtel_on_posix__#include <stdlib.h>#endif#include "tao/TaoTerminalAdaptor.h"#include "tao/TaoTransportTask.h"#include "tao/TaoString.h"#include "tao/TaoListenerManager.h"#include "ps/PsMsg.h"#include "ps/PsPhoneTask.h"#include "cp/CpCallManager.h"#ifdef _WIN32# define CONFIG_PREFIX_USER_DATA "..\\meta\\"# define CONFIG_PREFIX_SHARED_DATA "..\\meta\\"# define CONFIG_FILE_NAME CONFIG_PREFIX_USER_DATA "pinger-config"#else# define CONFIG_FILE_NAME "pinger-config"#endif#define CONFIG_FILE_NAME_IN_FLASH "/flash0/pinger-config"//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////TaoTerminalAdaptor::TaoTerminalAdaptor(CpCallManager *pCallMgr, PsPhoneTask *pPhoneTask, TaoTransportTask*& rpSvrTransport, TaoListenerManager* pListenerMgr, TaoMessage& rMsg, const UtlString& name, const int maxRequestQMsgs) : TaoAdaptor(name, maxRequestQMsgs), mpCallMgrTask(pCallMgr){ mpSvrTransport = rpSvrTransport; mpPhoneTask = pPhoneTask; mpListenerMgr = pListenerMgr; parseMessage(rMsg); mpObjectDb = new TaoObjectMap(); mpObjectCnt = new TaoReference(); const char* configFileName =#ifdef _VXWORKS CONFIG_FILE_NAME_IN_FLASH;#else CONFIG_FILE_NAME;#endif initConfigFile(configFileName); if (!isStarted()) { start(); }}TaoTerminalAdaptor::TaoTerminalAdaptor(CpCallManager *pCallMgr, PsPhoneTask *pPhoneTask, TaoTransportTask*& rpSvrTransport, TaoListenerManager* pListenerMgr, const UtlString& name, const int maxRequestQMsgs) : TaoAdaptor(name, maxRequestQMsgs), mpCallMgrTask(pCallMgr){ mpPhoneTask = pPhoneTask; mpSvrTransport = rpSvrTransport; mpListenerMgr = pListenerMgr; mpObjectDb = new TaoObjectMap(); mpObjectCnt = new TaoReference(); if (!isStarted()) { start(); }}TaoTerminalAdaptor::~TaoTerminalAdaptor(){ if (mpObjectDb) { delete mpObjectDb; mpObjectDb = 0; } if (mpObjectCnt) { delete mpObjectCnt; mpObjectCnt = 0; }}UtlBoolean TaoTerminalAdaptor::handleMessage(OsMsg& rMsg){ UtlBoolean handled = FALSE; int msgType = rMsg.getMsgSubType(); int cmd = ((TaoMessage&)rMsg).getCmd(); if( TaoMessage::REQUEST_TERMINAL == msgType) { switch (cmd) { case TaoMessage::ADD_CALL_LISTENER: if (TAO_SUCCESS == terminalAddCallListener((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::ADD_TERM_LISTENER: if (TAO_SUCCESS == terminalAddTermListener((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_ADDRESSES: if (TAO_SUCCESS == terminalGetAddresses((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_CALL_LISTENERS: if (TAO_SUCCESS == terminalGetCallListeners((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_COMPONENT: if (TAO_SUCCESS == terminalGetComponent((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_COMPONENTS: if (TAO_SUCCESS == terminalGetComponents((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_COMPONENTGROUPS: if (TAO_SUCCESS == terminalGetComponentGroups((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_CONFIG: if (TAO_SUCCESS == terminalGetConfig((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_DONOT_DISTURB: if (TAO_SUCCESS == terminalGetDoNotDisturb((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_NAME: if (TAO_SUCCESS == terminalGetName((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_TERM_CONNECTIONS: if (TAO_SUCCESS == terminalGetTermConnections((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_TERM_LISTENERS: if (TAO_SUCCESS == terminalGetTermListeners((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::GET_PROVIDER: if (TAO_SUCCESS == terminalGetProvider((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::NUM_ADDRESSES: if (TAO_SUCCESS == terminalNumAddresses((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::NUM_CALL_LISTENERS: if (TAO_SUCCESS == terminalNumCallListeners((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::NUM_COMPONENTS: if (TAO_SUCCESS == terminalNumComponents((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::NUM_TERM_LISTENERS: if (TAO_SUCCESS == terminalNumTermListeners((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::NUM_TERM_CONNECTIONS: if (TAO_SUCCESS == terminalNumTermConnectionss((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::PICKUP: if (TAO_SUCCESS == terminalPickup((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::REMOVE_CALL_LISTENER: if (TAO_SUCCESS == terminalRemoveCallListener((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::REMOVE_TERM_LISTENER: if (TAO_SUCCESS == terminalRemoveTermListener((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::SET_DONOT_DISTURB: if (TAO_SUCCESS == terminalSetDoNotDisturb((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::SET_INBOUND_CODEC_CPU_LIMIT: if (TAO_SUCCESS == terminalSetCodecCPULimit((TaoMessage&)rMsg)) { handled = TRUE; } break; case TaoMessage::TERMINAL_RESULT: if (TAO_SUCCESS == returnResult((TaoMessage&)rMsg)) { handled = TRUE; } break; default: break; } } else if (TaoMessage::RESPONSE_TERMINAL == msgType) { if (TAO_SUCCESS == returnResult((TaoMessage&)rMsg)) handled = TRUE; } if (!handled) { TaoMessage* pMsg = (TaoMessage*) &rMsg; pMsg->setArgCnt(1); pMsg->setArgList("-1"); if (mpSvrTransport->postMessage(*pMsg)) handled = TRUE; } return handled;}/* ----------------------------- TERMINAL --------------------------------- */TaoStatus TaoTerminalAdaptor::terminalAddCallListener(TaoMessage& rMsg){ int argCnt = rMsg.getArgCnt(); if (argCnt != 2) return TAO_FAILURE; UtlString arg = UtlString("0"); if (mpListenerMgr) { argCnt = 0; mpListenerMgr->addCallListener(rMsg); } else { argCnt = 1; arg = UtlString("-1"); // indicating failure } TaoObjHandle clientSocket = rMsg.getSocket(); TaoObjHandle msgId = rMsg.getMsgID(); TaoObjHandle objId = rMsg.getTaoObjHandle(); TaoMessage* pMsg = new TaoMessage(TaoMessage::RESPONSE_TERMINAL, TaoMessage::ADD_CALL_LISTENER, msgId, objId, clientSocket, argCnt, arg); if (mpSvrTransport->postMessage(*pMsg)) { delete pMsg; return TAO_SUCCESS; } return TAO_FAILURE;}TaoStatus TaoTerminalAdaptor::terminalAddTermListener(TaoMessage& rMsg){ int argCnt = rMsg.getArgCnt(); if (argCnt != 2) return TAO_FAILURE; UtlString arg = UtlString("0"); if (mpListenerMgr) { argCnt = 0; mpListenerMgr->addEventListener(rMsg); } else { argCnt = 1; arg = UtlString("-1"); // indicating failure } TaoObjHandle clientSocket = rMsg.getSocket(); TaoObjHandle msgId = rMsg.getMsgID(); TaoObjHandle objId = rMsg.getTaoObjHandle(); TaoMessage* pMsg = new TaoMessage(TaoMessage::RESPONSE_TERMINAL, TaoMessage::ADD_TERM_LISTENER, msgId, objId, clientSocket, argCnt, arg); if (mpSvrTransport->postMessage(*pMsg)) { delete pMsg; return TAO_SUCCESS; } return TAO_FAILURE;}/*** getAddresses() basically does the same thing as* TaoProviderAdapter:getAddresses() in this implementation.* It returns the user lines as addresses.*/TaoStatus TaoTerminalAdaptor::terminalGetAddresses(TaoMessage& rMsg){ int argCnt = rMsg.getArgCnt(); if (argCnt != 1) return TAO_FAILURE; UtlString thisTerminal = rMsg.getArgList();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -