Esempio n. 1
0
int AskForResend(LinkC_Socket *Socket, int Count){
    ConfirmationMessage confirm;                                        //  数据结构
    confirm.isRecved    = 0;                                            //  说明没有收到
    confirm.Count       = Count;                                        //  说明哪个包没有收到
    int Length = PackMessage((void *)&confirm,sizeof(confirm),Socket,Socket->SendBuffer);  //  打包数据
    ___LinkC_Send(Socket,Socket->SendBuffer,Length,MSG_DONTWAIT);                   //  发送数据
    return 0;                                                           //  返回成功
}
Esempio n. 2
0
int CPushService::Push(const char *psToken, const char *psPayload)
{
	char asTokenBytes[33];
	char asMessage[256];
	int iMsgLength = 0;
	Token2Bytes(psToken, asTokenBytes);

	iMsgLength = PackMessage(asMessage, 0, asTokenBytes, psPayload);
	struct timeval stStartTime, stEndTime;
	gettimeofday(&stStartTime, NULL);

	int  iLen = 0;
	bool bIsReconnected = false;
	if(m_ucDeviceType != I_DEVICE_DAILY_BUILD)
	{
		iLen = g_cApnsMgr.Write(asMessage, iMsgLength, bIsReconnected);
	}
	else
	{
		iLen = g_cApnsDMgr.Write(asMessage, iMsgLength, bIsReconnected);
	}

	LOG_DBG("payload |%s|, send type|%u| send Len|%d|, IsReconnected|%d|, m_ucDeviceType|%u|", psPayload,
				m_ucDeviceType, iLen, bIsReconnected, m_ucDeviceType);
	//添加监控
	if(bIsReconnected)
	{
		MyMonitor(MON_APNS_INIT_SSL);
	}

	gettimeofday(&stEndTime, NULL);
	int iExecTimeMs = 1000 * (stEndTime.tv_sec - stStartTime.tv_sec)
			+ (stEndTime.tv_usec - stEndTime.tv_usec) / 1000;
	LOG_DBG("ssl_write Len:%d  exec_time:|%d| TknSeq|%llu| uin|%u|", iLen, iExecTimeMs, m_stMsg.ullPushID,m_ulUin);

	if(iLen != iMsgLength)
	{
		LOG_ERR("send to apns error send_len|%d|,msgLen|%d|,send type|%u|,TknSeq|%llu|,uin|%u|,errno|%d|", iLen, iMsgLength, m_ucDeviceType,m_stMsg.ullPushID,m_ulUin, errno);
		MyMonitor(MON_PUSH_FAIL);
		return ERR_CONNECT_APNS_FAIL;
	}
	MyMonitor(MON_PUSH_SUCC);
	return 0;
}