コード例 #1
0
ファイル: RemoteClient.cs プロジェクト: Xnovae/MobaClient
        //线程安全方法
        void Close()
        {
            if (IsClose)
            {
                return;
            }
            Debug.LogError("CloseRemoteClient");
            if (client != null)
            {
                try
                {
                    if (client != null && client.Connected)
                    {
                        client.Close();
                    }
                } catch (Exception exception)
                {
                    Debug.LogError(exception.ToString());
                }
            }
            client  = null;
            IsClose = true;
            signal.Set();

            if (evtHandler != null)
            {
                var eh = evtHandler;
                ml.queueInLoop(() =>
                {
                    SendEvt(eh, RemoteClientEvent.Close);
                });
            }
            evtHandler = null;
            msgHandler = null;
        }
コード例 #2
0
ファイル: RemoteClient.cs プロジェクト: Xnovae/MobaClient
        public IEnumerator SendWaitResponse(byte[] data, uint fid, KBEngine.MessageHandler handler, Bundle bundle)
        {
            var ret = false;

            flowHandler.Add(fid, (packet) => {
                handler(packet);
                ret = true;
            });
            Send(data, bundle);
            //float passTime = 0;
            while (!ret && !IsClose)
            {
                yield return(null);
                //passTime += Time.deltaTime;
            }
            if (!ret)
            {
                Debug.LogError("TimeOutRequest: " + fid + " h " + handler);
                var packet = new Packet();
                packet.responseFlag = 1;
                handler(packet);
            }
        }