当前位置: 首页>>代码示例>>C++>>正文


C++ UserSession::IsKey方法代码示例

本文整理汇总了C++中UserSession::IsKey方法的典型用法代码示例。如果您正苦于以下问题:C++ UserSession::IsKey方法的具体用法?C++ UserSession::IsKey怎么用?C++ UserSession::IsKey使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在UserSession的用法示例。


在下文中一共展示了UserSession::IsKey方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: CheckUserLoop

// 检测用户心跳
void PasClient::CheckUserLoop( UserSession &user )
{
	// 控制通道的链路维护
	PccUser &tcpuser = user.GetUser( true ) ;
	if ( tcpuser.IsOnline() ) {
		if ( tcpuser.Check( 30, PCC_USER_LOOP ) && user.IsKey(true) ) {
			char buf[1024] = {0};
			sprintf( buf, "SZ N %s\r\n", tcpuser._srv_key.c_str() ) ;
			SendData( tcpuser._fd, buf, strlen(buf) ) ;
			tcpuser.Update( PCC_USER_LOOP ) ;

			OUT_SEND( tcpuser._srv_ip.c_str(), tcpuser._srv_port, tcpuser._username.c_str(), "fd %d, Send TCP NOOP: %s",
					tcpuser._fd->_fd, buf ) ;
		}
		// 如果超时需要处理重连操作
		if ( tcpuser.Check( 180, PCC_USER_ACTVIE ) ) {
			tcpuser.SetOffline() ;
			user.GetUser(false).SetOffline() ;
			OUT_ERROR( tcpuser._srv_ip.c_str(), tcpuser._srv_port, tcpuser._username.c_str(), "tcp  actvie time timeout") ;
		}
	} else if ( ! tcpuser.IsOffline() ) {
		if ( tcpuser.Check( 120, PCC_USER_LOGIN ) ) {
			tcpuser.SetOffline() ;
			OUT_PRINT( tcpuser._srv_ip.c_str(), tcpuser._srv_port, tcpuser._username.c_str(), "connect server tcp timeout") ;
		}
	}

	// 数据通道链路维护
	PccUser &udpuser = user.GetUser(false) ;
	if ( udpuser.IsOnline() ) {
		if ( udpuser.Check( 30, PCC_USER_LOOP ) && user.IsKey(false) ) {
			char buf[1024] = {0};
			sprintf( buf, "*%s|NOOP|%s#", user.GetSrvId(), udpuser._srv_key.c_str() ) ;
			SendData( udpuser._fd, buf, strlen(buf) ) ;
			// _udp_handle.deliver_data( udpuser._fd, udpuser._srv_ip.c_str(), udpuser._srv_port, buf, strlen(buf) ) ;
			udpuser.Update( PCC_USER_LOOP ) ;

			OUT_SEND( udpuser._srv_ip.c_str(), udpuser._srv_port, udpuser._username.c_str(), "fd %d, Send UDP NOOP: %s",
					udpuser._fd->_fd, buf ) ;
		}
		// 如果UDP心跳没有应答就直接处理重连了
		if ( udpuser.Check(180, PCC_USER_ACTVIE) ) {
			udpuser.SetOffline() ;
			OUT_ERROR( udpuser._srv_ip.c_str(), udpuser._srv_port, udpuser._username.c_str(), "udp active time timeout" ) ;
			tcpuser.SetOffline() ;
		}
	} else {
		if ( udpuser.Check( 120, PCC_USER_LOGIN) ) {
			udpuser.SetOffline() ;
			OUT_PRINT( udpuser._srv_ip.c_str(), udpuser._srv_port, udpuser._username.c_str(), "connect server udp timeout") ;
			tcpuser.SetOffline() ;
		}
	}
}
开发者ID:caocf,项目名称:workspace-kepler,代码行数:55,代码来源:pasclient.cpp

示例2: CheckUserState

// 检测用户状态
void PasClient::CheckUserState( UserSession &user )
{
	// 如果当前TCP用户不在线
	if ( user.IsOffline(true) ) {
		// 如果当前用户还没有超时就允许重新连接
		if ( !user.Check( 30, PCC_USER_LOGIN , true ) )
			return ;
		ConnectServer( user, true ) ;
	} else if ( user.IsOffline(false) && user.IsOnline(true) ){
		// 如果当前TCP用户鉴权码为空也不能登陆数据链路
		if ( ! user.IsKey(true) )
			return ;
		if ( ! user.Check( 30, PCC_USER_LOGIN, false ) )
			return ;

		ConnectServer( user, false ) ;
	}
}
开发者ID:caocf,项目名称:workspace-kepler,代码行数:19,代码来源:pasclient.cpp


注:本文中的UserSession::IsKey方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。