예제 #1
0
파일: DirClient.cs 프로젝트: fengqk/Art
        public override void OnRecvProtocol(Session session, Protocol protocol)
        {
			//UnityEngine.Debug.Log("DirClient:OnRecvProtocol. procotol type:" + protocol.getProtocolType().ToString());
            if(protocol.getProtocolType()==DirInfo.PROTOCOL_TYPE)
		    {
                DirInfo p = protocol as DirInfo;
                if(p!=null)
                {
			        Close(session);
					m_dirInfo = p;
					m_requesting = false;
                }
		    }
        }
예제 #2
0
파일: PingClient.cs 프로젝트: fengqk/Art
        public override void OnRecvProtocol(Session session, Protocol protocol)
        {
            Console.WriteLine("PingClient:OnRecvProtocol. procotol type:" + protocol.getProtocolType().ToString());
            if(protocol.getProtocolType()==Challenge.PROTOCOL_TYPE)
		    {
                Challenge p = protocol as Challenge;
                if(p!=null)
                {
                    ServerStatus status = new ServerStatus();
			       // status.attr = *(Attr*)(p->nonce.begin());
                    {
                        lock (locker) 
                        {
                            status.ping = (uint)(Environment.TickCount - pingmap[session.ID]);
                        }
                    }
			        if(status.ping<=5)
				            status.ping = 5;
			        status.ping = status.ping>9999?9999:status.ping;
                    m_callback(status, session, (int)EVENT.EVENT_PINGRETURN);
			        Close(session);
			        //p.Destroy();

                }
			   
		    }
        }
예제 #3
0
파일: GameClient.cs 프로젝트: fengqk/Art
        public override void OnRecvProtocol(Session session, Protocol protocol)
        {
			try
			{
				lock (locker)
				{
					if (this.session == session)
					{
						if (protocol.getProtocolType() == KeepAlive.PROTOCOL_TYPE)
						{
							m_lastrecv = (uint)Environment.TickCount;
							m_ping = m_lastrecv - m_lastsend;
							//protocol.Destroy();
						}
						else if (protocol.getProtocolType() == (int)GNET.NetProtocolType.PROTOCOL_MARSHALDATA)
						{
							CommonData p = (CommonData)protocol;
							GNET.MarshalData md = new GNET.MarshalData();

							md.unmarshal(p.GetData());

							Protocol prtc = Protocol.DecodeMarshal(md.data);
							protocol = null;
							if (prtc != null)
								m_callback(prtc, session, (int)WM.WM_IOPROTOCOL);
						}
						else
						{
							m_callback(protocol, session, (int)WM.WM_IOPROTOCOL);
						}
					}
				}
			}
			catch (Exception e)
			{
				Debug.LogException(e);	//线程里,输出下错误信息
			}
        }