소스 검색

#IQBX #comment mod_counterconnector 编译成功

80374374 1 년 전
부모
커밋
3786019773

+ 12 - 1
Module/mod_counterconnector/CMakeLists.txt

@@ -23,6 +23,11 @@ set(MOD_VERSION_STRING "0.0.1-dev1")
 add_module_libraries(${MODULE_PREFIX} ${MODULE_NAME} ${MOD_VERSION_STRING})
 
 target_include_directories(${MODULE_NAME} PRIVATE
+	${MODULE_BASE_DIR}/mod_assistantchannel
+	${MODULE_BASE_DIR}/mod_sipphone
+	${MODULE_BASE_DIR}/mod_mediacontroller
+	${MODULE_BASE_DIR}/mod_interactioncontext
+	${MODULE_BASE_DIR}/mod_livenessdetection
 	${CONAN_INCLUDE_DIRS_JSONCPP}
 )
 
@@ -32,9 +37,15 @@ target_link_directories(${MODULE_NAME} PRIVATE
 
 
 # 添加实体需要依赖的其他共享库(包括系统库)
+if(MSVC)
+set(${MODULE_PREFIX}_LIBS  ${MODULE_BASE_LIBS}
+	uuid ws2_32 Rpcrt4 Winmm
+)
+else()
 set(${MODULE_PREFIX}_LIBS  ${MODULE_BASE_LIBS}
 	uuid
 )
-target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
+endif(MSVC)
+target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS} ${MODULE_BASE_ALL_LIBS})
 
 deploy_module(${MODULE_PREFIX} ${MODULE_NAME})

+ 40 - 27
Module/mod_counterconnector/ConnectorFSM.cpp

@@ -1,7 +1,7 @@
 #include "stdafx.h"
 #include "ConnectorFSM.h"
-#include "../include/ModuleMix.h"
-#include "../include/EventCode.h"
+#include "ModuleMix.h"
+#include "EventCode.h"
 #include "json/json.h"
 
 #define RELEASEING_TIMER_INTERVAL	1200
@@ -139,6 +139,7 @@ ACMCallFSM::ACMCallFSM()
 {
 	m_nCurSipServer = CurServerNum::MAIN_SERVER;
 	m_nCurChanServer = CurServerNum::MAIN_SERVER;
+	m_iNetAdapterNum = 1;
 	m_pSyncServiceClient = NULL;
 	m_bConAssist = FALSE;
 	m_bConSipphone = FALSE;
@@ -432,13 +433,21 @@ static int CStringSplit(char* str, char** result, size_t ucount, const char* del
 {
 	char* ptr = NULL;
 	size_t unum = ucount;
+#if defined(RVC_OS_WIN)
+	char* p = strtok_s(str, del, &ptr);
+	while (p != NULL && unum > 0) {
+		*result++ = p;
+		p = strtok_s(NULL, del, &ptr);
+		unum--;
+	}
+#else
 	char* p = strtok_r(str, del, &ptr);
-	while (p != NULL && unum > 0){
+	while (p != NULL && unum > 0) {
 		*result++ = p;
 		p = strtok_r(NULL, del, &ptr);
 		unum--;
 	}
-
+#endif //RVC_OS_WIN
 	return ucount - unum;
 }
 
@@ -466,36 +475,40 @@ static int GetCallInfoFromConfig(char* strcallurl, size_t ucalllen, char* strass
 }
 
 /*无符号长整形转字符型*/
-static char* _ultoa(unsigned long value, char* pstring, int radix)
+#if defined(RVC_OS_LINUX)
+namespace
 {
-	char tmp[33] = { 0 };
-	char* tp = tmp;
-	long i;
-	unsigned long v = value;
-	char* sp;
 
-	if (radix > 36 || radix <= 1 || NULL == pstring) {
-		return 0;
-	}
+	char* _ultoa(unsigned long value, char* pstring, int radix)
+	{
+		char tmp[33] = { 0 };
+		char* tp = tmp;
+		long i;
+		unsigned long v = value;
+		char* sp;
 
+		if (radix > 36 || radix <= 1 || NULL == pstring) {
+			return 0;
+		}
 
-	while (v || tp == tmp)
-	{
-		i = v % radix;
-		v = v / radix;
-		if (i < 10)
-			* tp++ = i + '0';
-		else
-			*tp++ = i + 'a' - 10;
-	}
+		while (v || tp == tmp) {
+			i = v % radix;
+			v = v / radix;
+			if (i < 10)
+				*tp++ = i + '0';
+			else
+				*tp++ = i + 'a' - 10;
+		}
 
-	sp = pstring;
+		sp = pstring;
 
-	while (tp > tmp)
-		* sp++ = *--tp;
-	*sp = 0;
-	return pstring;
+		while (tp > tmp)
+			*sp++ = *--tp;
+		*sp = 0;
+		return pstring;
+	}
 }
+#endif //RVC_OS_LINUX
 
 static int get_interger_netaddr(char *strbuf, size_t ubufszie, const char* szip)
 {

+ 34 - 8
Module/mod_counterconnector/ConnectorFSM.h

@@ -548,6 +548,32 @@ private:
 
 	ErrorCodeEnum GetLocalIP(char *buff, size_t ulen)
 	{
+#if defined(RVC_OS_WIN)
+		char tmp[MAX_PATH] = { 0 };
+		gethostname(tmp, sizeof(tmp));
+		hostent* ent = gethostbyname(tmp);
+		if (ent) {
+			int icount = 0;
+			for (; ent->h_addr_list[icount]; ) {
+				++icount;
+			}
+			m_iNetAdapterNum = icount;
+			for (int i = 0; ent->h_addr_list[i]; ++i) {
+				if (ent->h_addrtype == AF_INET) {
+					struct in_addr* in = (struct in_addr*)ent->h_addr_list[i];
+					char* p = inet_ntoa(*in);
+					if (p[0] != '0') {
+						if (strstr(p, "198.168.") == NULL && 0 != strncmp(p, "2.0.0.1", strlen("2.0.0.1"))) {
+							strcpy(buff, p);
+							DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("local ip == %s", buff);
+							return Error_Succeed;
+						}
+					}
+				}
+			}
+		}
+		return Error_Unexpect;
+#else
 		ErrorCodeEnum error = Error_Unexpect;
 		int sockfd = -1;
 		struct ifconf ifconf;
@@ -563,12 +589,11 @@ private:
 		ifreq = (struct ifreq*)ifconf.ifc_buf;
 		for (int i = (ifconf.ifc_len / sizeof(struct ifreq)); i > 0; i--) {
 			if (ifreq->ifr_flags == AF_INET) { //for ipv4
-				char* strIP = inet_ntoa(((struct sockaddr_in*) & (ifreq->ifr_addr))->sin_addr);
+				char* strIP = inet_ntoa(((struct sockaddr_in*)&(ifreq->ifr_addr))->sin_addr);
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("name = %s, local addr = %s", ifreq->ifr_name, strIP);
 				ifreq++;
 				if (NULL != strIP) {
-					if (NULL == strstr(strIP, "198.168.") && NULL == strstr(strIP, "127.0.0.1"))
-					{
+					if (NULL == strstr(strIP, "198.168.") && NULL == strstr(strIP, "127.0.0.1")) {
 						strcpy(buff, strIP);
 						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("local ip == %s", buff);
 						error = Error_Succeed;
@@ -579,9 +604,9 @@ private:
 		}
 		close(sockfd);
 		return error;
+#endif //RVC_OS_WIN
 	}
 
-
 	ErrorCodeEnum MakeCall(const char *hint_callnum,int nSipServer)
 	{
 		if (!m_pPhoneClient) {
@@ -825,7 +850,7 @@ private:
 	ErrorCodeEnum StartRing()
 	{
 	#ifdef _WIN32
-		BOOL bRet = FALSE;// ::PlaySoundA(MAKEINTRESOURCEA(IDR_RINGOUT), ModuleBase::GetModuleBase()->GetInstance(), SND_ASYNC | SND_RESOURCE | SND_LOOP);
+		BOOL bRet = ::PlaySoundA(MAKEINTRESOURCEA(IDR_RINGOUT), ModuleBase::GetModuleBase()->GetInstance(), SND_ASYNC|SND_RESOURCE|SND_LOOP);
 		if (bRet) {
 			m_bRing = TRUE;
 			return Error_Succeed;
@@ -846,9 +871,9 @@ private:
 		if (m_bRing) {
 			BOOL bRet = FALSE;
 			int tries = 0;
-			//do {
-			//	bRet = ::PlaySoundA(NULL, NULL, SND_ASYNC | SND_LOOP);
-			//} while (bRet == FALSE && (Sleep(100), tries < 3));
+			do {
+				bRet = ::PlaySoundA(NULL, NULL, SND_ASYNC|SND_LOOP);
+			} while (bRet == FALSE && (Sleep(100), tries < 3));
 			m_bRing = FALSE;
 		}
 	#else
@@ -929,6 +954,7 @@ private:
 	std::vector<std::string> m_voipserver;
 	ErrorCodeEnum m_LastSipError;
 	ErrorCodeEnum m_LastAssistError;
+	int m_iNetAdapterNum;
 
 	CSimpleStringA m_strHttpCallRouteAddr;
 	CSimpleStringA m_strHttpServerAPI;

+ 2 - 0
Module/mod_counterconnector/Event.h

@@ -107,6 +107,7 @@
 #define LOG_WARN_COUNTERCONNECT_FAILED_AGENT_BUSY					0x30460604	 //agent busy
 #define LOG_WARN_COUNTERCONNECT_FAILED_NETWORK_FAILURE				0x30460605	 //network failure
 
+#define LOG_WARN_COUNTERCONNECT_GET_VIDEO_FAILED_INFO				0x30460701	 
 
 #define EVENT_MOD_CONNECT_GPIO_PICKUP			0x20900005		//PICKUP		
 #define EVENT_MOD_CONNECT_GPIO_HANDFREE			0x20900006		//HANDFREE
@@ -130,6 +131,7 @@
 
 #define EVENT_MOD_CONNECT_STOP_RECORD_BROADCAST		0x10303060	//结束双录语音播报
 #define EVENT_MOD_CONNECT_BEGAIN_RECORD_CALL		0x10303061	//开始双录呼叫
+#define EVENT_MOD_SIP_GET_VIDEO_FAILED								0x30190806	 //连线时获取视频失败
 
 
 #define LOG_WARN_COUNTERCONNECT_FAILED_SIPPHONE_LOST				0x30460601	 //sip phone lost

+ 58 - 18
Module/mod_counterconnector/callrouter.cpp

@@ -1,4 +1,4 @@
-
+#include "stdafx.h"
 #include "callrouter.h"
 #include "strutil.h"
 #include "callroute_request.h"
@@ -59,26 +59,42 @@ static int get_sys_time(char* pDst, size_t iLen)
 	return iret;
 }
 
+#if defined(RVC_OS_WIN)
 
-static int set_socket_attribute(SOCKET client_socket, struct timeval timeout)
+
+static int set_socket_attribute(SOCKET client_socket, int timeout)
 {
 	int ret = -1;
 
-	if(setsockopt(client_socket,SOL_SOCKET,SO_SNDTIMEO,(const void*)& timeout,sizeof(timeout))==SOCKET_ERROR){
-#ifdef RVC_OS_WIN
+	if (setsockopt(client_socket, SOL_SOCKET, SO_SNDTIMEO, (char*)&timeout, sizeof(timeout)) == SOCKET_ERROR) {
 		closesocket(client_socket);
-#else
-		close(client_socket);
-#endif // RVC_OS_WIN
 		return ret;
 	}
 
-	if(setsockopt(client_socket,SOL_SOCKET,SO_RCVTIMEO,(const void*)& timeout,sizeof(timeout))==SOCKET_ERROR){
-#ifdef RVC_OS_WIN
+	if (setsockopt(client_socket, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout)) == SOCKET_ERROR) {
 		closesocket(client_socket);
+		return ret;
+	}
+
+
+	ret = 0;
+
+	return ret;
+}
+
 #else
+
+static int set_socket_attribute(SOCKET client_socket, struct timeval timeout)
+{
+	int ret = -1;
+
+	if (setsockopt(client_socket, SOL_SOCKET, SO_SNDTIMEO, (const void*)&timeout, sizeof(timeout)) == SOCKET_ERROR) {
+		close(client_socket);
+		return ret;
+	}
+
+	if (setsockopt(client_socket, SOL_SOCKET, SO_RCVTIMEO, (const void*)&timeout, sizeof(timeout)) == SOCKET_ERROR) {
 		close(client_socket);
-#endif // RVC_OS_WIN
 		return ret;
 	}
 
@@ -87,6 +103,10 @@ static int set_socket_attribute(SOCKET client_socket, struct timeval timeout)
 	return ret;
 }
 
+#endif //RVC_OS_WIN
+
+
+
 static int request_voipgateway_address(call_info_t *call_info, proxy_rsp_packet_t* rsp_packet, const size_t rsp_len)
 {
 	int ret = -1;
@@ -101,14 +121,24 @@ static int request_voipgateway_address(call_info_t *call_info, proxy_rsp_packet_
 	int itimelen = 0;
 
 	SOCKET client_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+#if defined(RVC_OS_WIN)
+	if (set_socket_attribute(client_socket, 2000)) {
+#else
 	struct timeval timeout = { 2,0 };
-	if (set_socket_attribute(client_socket, timeout)){
-		LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALLROUTE_CONNECT_FAILED, "request_voipgateway_address set_socket_attribute failed.");
+	if (set_socket_attribute(client_socket, timeout)) {
+#endif //RVC_OS_WIN
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("request_voipgateway_address set_socket_attribute failed.");
 		return ret;
 	}
 	if (INVALID_SOCKET != client_socket){
 		struct sockaddr_in sa;  
 		sa.sin_family = AF_INET;  
+#ifdef RVC_OS_WIN
+		sa.sin_addr.S_un.S_addr = inet_addr(call_info->callroute_server_ip);
+		sa.sin_port = htons(call_info->callroute_server_port);
+		memset(sa.sin_zero, 0, sizeof(sa.sin_zero));
+		ioctlsocket(client_socket, FIONBIO, &mode);
+#else
 		sa.sin_addr.s_addr = inet_addr(call_info->callroute_server_ip.GetData());
 		sa.sin_port = htons(call_info->callroute_server_port);
 		memset(sa.sin_zero, 0, sizeof(sa.sin_zero));
@@ -116,9 +146,6 @@ static int request_voipgateway_address(call_info_t *call_info, proxy_rsp_packet_
 		snprintf(strmsg, 256, "dest route addr is %s:%d.", call_info->callroute_server_ip.GetData(), call_info->callroute_server_port);
 		LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALLROUTE_ADDRESS, strmsg);
 		//控制为非阻塞方式
-#ifdef RVC_OS_WIN
-		ioctlsocket(client_socket, FIONBIO, &mode);
-#else
 		ioctl(client_socket, FIONBIO, &mode);
 #endif // RVC_OS_WIN
 		ret = connect(client_socket, (struct sockaddr *)&sa, sizeof(struct sockaddr));
@@ -126,6 +153,17 @@ static int request_voipgateway_address(call_info_t *call_info, proxy_rsp_packet_
 			bconnected = TRUE;
 		}
 		else{
+#if defined(RVC_OS_WIN)
+			fd_set set;
+			struct timeval timeout;
+			FD_ZERO(&set);
+			FD_SET(client_socket, &set);
+			timeout.tv_sec = 2;
+			timeout.tv_usec = 0;
+			if (select(NULL, NULL, &set, NULL, &timeout) > 0) {
+				bconnected = TRUE;
+			}
+#else
 			if (EINPROGRESS == errno) {
 				fd_set writeset;
 				struct timeval timeout;
@@ -133,13 +171,14 @@ static int request_voipgateway_address(call_info_t *call_info, proxy_rsp_packet_
 				FD_SET(client_socket, &writeset);
 				timeout.tv_sec = 2;
 				timeout.tv_usec = 0;
-				if (select(client_socket+1, NULL, &writeset, NULL, &timeout) > 0) {
+				if (select(client_socket + 1, NULL, &writeset, NULL, &timeout) > 0) {
 					if (FD_ISSET(client_socket, &writeset)) {
 						bconnected = TRUE;
 					}
-					
+
 				}
 			}
+#endif //RVC_OS_WIN
 		}
 		//控制为阻塞方式
 		mode = 0;  
@@ -151,12 +190,13 @@ static int request_voipgateway_address(call_info_t *call_info, proxy_rsp_packet_
 		if (!bconnected){	//连接失败  
 #ifdef RVC_OS_WIN
 			closesocket(client_socket);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("request_voipgateway_address connect callroute server timeout.");
 #else
 			close(client_socket);
-#endif // RVC_OS_WIN
 			char strerror[256];
 			snprintf(strerror, 256, "request_voipgateway_address connect callroute server timeout(%d).", errno);
 			LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALLROUTE_CONNECT_FAILED, strerror);
+#endif // RVC_OS_WIN
 			return ret;      //超时
 		} 
 		reset_buffer(&req_info, 0x20, sizeof(proxy_req_packet_t));

+ 1 - 1
Module/mod_counterconnector/http_callrouter.cpp

@@ -37,7 +37,7 @@ static int get_http_callnodeinfo(node_info_t* pnode, const char* pcaller_num, co
 		}
 	}
 	
-	//to url Ç°Ãæ+8
+	//to url ��+8
 	if ('8' == *paccess_num) {
 		snprintf(pnode->strcallurl, RVC_DATALEN, "%s%s@%s", "sip:", paccess_num, strvoiceip);
 	}

+ 9 - 9
Module/mod_counterconnector/http_callrouter.h

@@ -44,15 +44,15 @@ struct CallRouteHTTPReq : CHTTPReq {
 
 
 struct CallRoute {
-	std::string m_accessNum;				//接入号			string
-	std::string m_branchNo;					//分行号			string
-	int m_clientLevel;						//队列等级			integer(int32)
-	std::string m_mediaGateAddress;			//媒体网关地址		string
-	std::string m_queueName;				//队列名			string
-	std::string m_terminalNo;				//终端号			string
-	std::string m_voiceGateAddress;			//语音网关地址		string
-	std::string m_mediaGateAddressBackUp;	//备用媒体网关地址	string
-	std::string m_voiceGateAddressBackUp;	//备用语音网关地址	string
+	std::string m_accessNum;				//鎺ュ叆鍙�			string
+	std::string m_branchNo;					//鍒嗚�鍙�			string
+	int m_clientLevel;						//闃熷垪绛夌骇			integer(int32)
+	std::string m_mediaGateAddress;			//濯掍綋缃戝叧鍦板潃		string
+	std::string m_queueName;				//闃熷垪鍚�			string
+	std::string m_terminalNo;				//缁堢�鍙�			string
+	std::string m_voiceGateAddress;			//璇�煶缃戝叧鍦板潃		string
+	std::string m_mediaGateAddressBackUp;	//澶囩敤濯掍綋缃戝叧鍦板潃	string
+	std::string m_voiceGateAddressBackUp;	//澶囩敤璇�煶缃戝叧鍦板潃	string
 };
 
 

+ 48 - 12
Module/mod_counterconnector/mod_counterconnector.cpp

@@ -60,11 +60,11 @@ ErrorCodeEnum CCounterConnectorEntity ::__OnStart(ErrorCodeEnum preOperationErro
 		m_bIsPadType = FALSE;
 	}
 
-	m_IsStandType = TRUE;
+	m_IsStand2SType = TRUE;
 
 	DeviceTypeEnum eDeviceType = RvcGetDeviceType();
 	if (eStand1SPlusType != eDeviceType && eStand2sType != eDeviceType) {
-		m_IsStandType = FALSE;
+		m_IsStand2SType = FALSE;
 	}
 
 	m_fsm.Init(this);
@@ -72,7 +72,7 @@ ErrorCodeEnum CCounterConnectorEntity ::__OnStart(ErrorCodeEnum preOperationErro
 
 	int i = 0;
 
-	m_arrListener.Init(22);
+	m_arrListener.Init(23);
 	spFunction->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CONNECT_PICKUP_CALL,NULL,false);
 	spFunction->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CONNECT_HANDFREE_CALL,NULL,false);
 	spFunction->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CONNECT_HANDFREE_TO_PICKUP);
@@ -95,6 +95,7 @@ ErrorCodeEnum CCounterConnectorEntity ::__OnStart(ErrorCodeEnum preOperationErro
 	spFunction->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_STARTREMOTERECORD,NULL,false);
 	spFunction->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_STOPREMOTERECORD,NULL,false);
 	spFunction->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_STARTRECORDPREVIEW,NULL,false);
+	spFunction->SubscribeLog(m_arrListener[i++], this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_SIP_GET_VIDEO_FAILED, NULL, false);
 
 	spFunction->RegistSysVarEvent("UIState", this);
 
@@ -298,6 +299,37 @@ void CCounterConnectorEntity::HandlePickUpCallEvent()
 	}
 }
 
+
+void CCounterConnectorEntity::HandleGetVideoFailedEvent()
+{
+	MediaService_ClientBase* pMSClient = new MediaService_ClientBase(this);
+	
+	CSimpleStringA strCustomerBeing;
+	GetFunction()->GetSysVar("CustomerBeing", strCustomerBeing);
+	CSimpleStringA strCustomerHandle;
+	GetFunction()->GetSysVar("CustomerHandle", strCustomerHandle);
+	CSimpleStringA strCameraState;
+	GetFunction()->GetSysVar("CameraState", strCameraState);
+	char strmsg[MAX_PATH] = { 0 };
+	char strinfo[MAX_PATH] = { 0 };
+
+	if (pMSClient->Connect() != Error_Succeed){
+		_snprintf(strmsg, MAX_PATH, "%s", "connect mediacontroller entity failed");
+		pMSClient->SafeDelete();
+		pMSClient = NULL;
+		
+	}
+	else{
+		_snprintf(strmsg, MAX_PATH, "%s", "connect mediacontroller entity success");
+		pMSClient->GetFunction()->CloseSession();
+		pMSClient->SafeDelete();
+		pMSClient = NULL;
+	}
+
+	_snprintf(strinfo, MAX_PATH, "%s, and CustomerBeing is %s, CustomerHandle is %s, CameraState is %s.", strmsg, strCustomerBeing.GetData(), strCustomerHandle.GetData(), strCameraState.GetData());
+	LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_GET_VIDEO_FAILED_INFO, strinfo);
+}
+
 ErrorCodeEnum CCounterConnectorEntity ::__OnClose(ErrorCodeEnum preOperationError)
 {
 	if (preOperationError != Error_Succeed) {
@@ -365,10 +397,6 @@ void CCounterConnectorEntity ::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUI
 		{
 			LogEvent(Severity_Middle,EVENT_MOD_CONNECT_SLV_HANDFREECALL,"handfree call");
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("界面拨号,免提呼叫");
-
-			if (pszMessage && strlen(pszMessage) > 0) {
-				LogWarn(Severity_Low, Error_Unexpect, EVENT_MOD_CONNECT_SLV_PICKUPCALL_HAS_CMD, pszMessage);
-			}
 			if (pszMessage && strlen(pszMessage) > 0 && isdigit(pszMessage[0])) 
 			{
 				char tmp[32];
@@ -561,6 +589,9 @@ void CCounterConnectorEntity ::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUI
 			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("offline state,ignore UI_STARTPHOTOGRAPH hangup event");
 		}
 		break;
+	case EVENT_MOD_SIP_GET_VIDEO_FAILED:
+		HandleGetVideoFailedEvent();
+		break;
 
 	default:
 		break;
@@ -789,7 +820,7 @@ void CCounterConnectorEntity::Handle_StartRemoteRecord(const char* pszMessage)
 void CCounterConnectorEntity::StopRemoteRecordSpeakerAudioCapture()
 {
 	if(DOUBLERECORD_CALLTYPE == m_fsm.m_CallingParam.nCallType){
-		if (TRUE == m_IsStandType){
+		if (TRUE == m_IsStand2SType){
 			if (FALSE == m_bIsRemoteRecordStopSpeakerCapture){
 				if (Error_Succeed == m_fsm.StopSpeakerAudioCapture()){
 					m_bIsRemoteRecordStopSpeakerCapture = TRUE;
@@ -928,7 +959,7 @@ void ChannelCounterConnectorClient::OnMessage(ErrorCodeEnum Error, ChannelServic
 		if (Msg.state == eChannelState_Idle) 
 		{
 			pEntity->m_fsm.m_bIsAgentControl = FALSE;
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ChannelState is eChannelState_Idle");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ChannelState is eChannelState_Idle");
 
 			if (eChannelState_Connected == m_eLastState){
 				char strmsg[MAX_PATH] = {0};
@@ -944,14 +975,14 @@ void ChannelCounterConnectorClient::OnMessage(ErrorCodeEnum Error, ChannelServic
 		{
 			pEntity->m_fsm.m_bIsAgentControl = TRUE;
 			pEntity->SendCurAudioDevice();
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ChannelState is eChannelState_Connected");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ChannelState is eChannelState_Connected");
 			m_uConnectTime = y2k_time_now();
 		}
 		else if (eChannelState_Connecting == Msg.state){
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ChannelState is eChannelState_Connecting");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ChannelState is eChannelState_Connecting");
 		}
 		else if(eChannelState_Closing == Msg.state){
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ChannelState is eChannelState_Closing");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ChannelState is eChannelState_Closing");
 			if (eChannelState_Connecting == m_eLastState){
 				LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_ASSIST_CONNECT_FAILED,"make call failed for assistant channel closed.");
 			}
@@ -972,6 +1003,7 @@ void ChannelCounterConnectorClient::OnMessage( ErrorCodeEnum Error, ChannelServi
 
 void CCounterConnectorSession::Handle_StartCall(SpReqAnsContext<ConnectService_StartCall_Req, ConnectService_StartCall_Ans>::Pointer ctx)
 {
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	ErrorCodeEnum rc = Error_Succeed;
 	m_pEntity->m_fsm.m_CallingParam.connect_ip		= ctx->Req.connect_ip; 
 	m_pEntity->m_fsm.m_CallingParam.connect_port	= ctx->Req.connect_port;
@@ -986,6 +1018,7 @@ void CCounterConnectorSession::Handle_StartCall(SpReqAnsContext<ConnectService_S
 
 void CCounterConnectorSession::Handle_StartCallExternal(SpReqAnsContext<ConnectService_StartCallExternal_Req, ConnectService_StartCallExternal_Ans>::Pointer ctx)
 {
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	ErrorCodeEnum rc = Error_Succeed;
 	RVCCallingParam* callparam = (RVCCallingParam*)ctx->Req.CommandParam.m_pData;
 
@@ -1009,6 +1042,7 @@ void CCounterConnectorSession::Handle_StartCallExternal(SpReqAnsContext<ConnectS
 
 void CCounterConnectorSession::Handle_StopCall(SpReqAnsContext<ConnectService_StopCall_Req, ConnectService_StopCall_Ans>::Pointer ctx)
 {
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	ErrorCodeEnum rc = Error_Succeed;
 	RVCCallingParam* callparam = (RVCCallingParam*)ctx->Req.SessionParam.m_pData;
 
@@ -1030,6 +1064,7 @@ void CCounterConnectorSession::Handle_StopCall(SpReqAnsContext<ConnectService_St
 
 void CCounterConnectorSession::Handle_GetCallRouteType(SpReqAnsContext<ConnectService_GetCallRouteType_Req, ConnectService_GetCallRouteType_Ans>::Pointer ctx)
 {
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Get Call Route Type is %d.", m_pEntity->m_iRouteType);
 	ctx->Ans.RouteType = m_pEntity->m_iRouteType;
 	ctx->Answer(Error_Succeed);
@@ -1038,6 +1073,7 @@ void CCounterConnectorSession::Handle_GetCallRouteType(SpReqAnsContext<ConnectSe
 
 void CCounterConnectorSession::Handle_SetVideoCallRouteParams(SpReqAnsContext<ConnectService_SetVideoCallRouteParams_Req, ConnectService_SetVideoCallRouteParams_Ans>::Pointer ctx)
 {
+	DbgToBeidou(ctx->link, __FUNCTION__)();
 	if (m_pEntity->m_iRouteType) {
 		m_pEntity->SetCallRouteParams(ctx->Req.BusinessName, ctx->Req.CallPriority);
 		ctx->Ans.ErrorCode = Error_Succeed;

+ 3 - 2
Module/mod_counterconnector/mod_counterconnector.h

@@ -12,7 +12,7 @@
 #include "SpHelper.h"
 #include "Event.h"
 #include "CounterConnector_msg_g.h"
-#include "../mod_assistantchannel/chan_protocol.h"
+#include "chan_protocol.h"
 #include "CounterConnector_server_g.h"
 
 class CCounterConnectorEntity ;
@@ -87,6 +87,7 @@ public:
 	ErrorCodeEnum LoadEntityConfig();
 	ErrorCodeEnum SetCallRouteParams(CSimpleStringA strQueueName, CSimpleStringA strClientLevel);
 	void HandlePickUpCallEvent();
+	void HandleGetVideoFailedEvent();
 
 	virtual bool IsService()const;
 	virtual void OnTimeout(DWORD dwTimerID);
@@ -101,7 +102,7 @@ public:
 
 private:
 	BOOL m_bIsPadType;
-	BOOL m_IsStandType;
+	BOOL m_IsStand2SType;
 	ChannelCounterConnectorClient*m_pCounterConnectorChannel;
 	CAutoArray<CUUID> m_arrListener;
 	CUUID m_uidlivenessListener;

BIN
Module/mod_counterconnector/mod_counterconnector.rc


+ 9 - 7
Module/mod_counterconnector/strutil.cpp

@@ -52,8 +52,9 @@ int fifter_string(char*pbuf, size_t usize, const char* psrc, const char cflag)
 	return ret;
 }
 
-
-/*ÎÞ·ûºÅ³¤ÕûÐÎת×Ö·ûÐÍ*/
+#if defined(_MSC_VER)
+#else
+/*无符�长整形转字符型*/
 char* _ultoa(unsigned long value, char* pstring, int radix)
 {
 	char tmp[33] = { 0 };
@@ -62,17 +63,16 @@ char* _ultoa(unsigned long value, char* pstring, int radix)
 	unsigned long v = value;
 	char* sp;
 
-	if (radix > 36 || radix <= 1 || NULL == pstring){
+	if (radix > 36 || radix <= 1 || NULL == pstring) {
 		return 0;
 	}
 
 
-	while (v || tp == tmp)
-	{
+	while (v || tp == tmp) {
 		i = v % radix;
 		v = v / radix;
 		if (i < 10)
-			* tp++ = i + '0';
+			*tp++ = i + '0';
 		else
 			*tp++ = i + 'a' - 10;
 	}
@@ -80,11 +80,13 @@ char* _ultoa(unsigned long value, char* pstring, int radix)
 	sp = pstring;
 
 	while (tp > tmp)
-		* sp++ = *--tp;
+		*sp++ = *--tp;
 	*sp = 0;
 	return pstring;
 }
 
+#endif //_MSC_VER
+
 int get_interger_netaddr(char *strbuf, size_t ubufszie, const char* szip)
 {
 	int ret = -1;