private static void CacheNiceStrings() { IEnumerator enumerator = Enum.GetValues(typeof(NetError)).GetEnumerator(); try { while (enumerator.MoveNext()) { object current = enumerator.Current; NetError netError = (NetError)((int)current); string str = NetErrorHelper.BuildNiceString(netError); if (str == null && netError != NetError.NoError) { Debug.LogWarning(string.Concat("NetError.", current, " has no nice string")); str = NetErrorHelper.FallbackNiceString(netError); } NetErrorHelper.niceStrings[netError] = str; } } finally { IDisposable disposable = enumerator as IDisposable; if (disposable == null) { } disposable.Dispose(); } }
private void OnSelectServerBack(JsonData jsonData) { if (jsonData == null) { Logger.LogError("[LoginServer.OnSelectServerBack() => select server failed~~]"); return; } Action RunOnMainThread = () => { int code = int.Parse(jsonData["Code"].ToString()); if (code != 0) { Logger.LogWarning("[LoginServer.OnSelectServerBack() => select server failed, error code:" + code + "]"); NetErrorHelper.DoErrorCode(code); return; } if (code == 0) { byte[] bd = Convert.FromBase64String(jsonData["MsgData"].ToString()); Logger.Log("login in success"); S2CSelectServerResponse pbData = S2CSelectServerResponse.Parser.ParseFrom(bd); GameNetMgr.Instance.mGameServer.ReqLoginGameServer(pbData.Acc, pbData.Token); } else { Logger.LogWarning("[GameNetMgr.DoSelectServer() => game logic failed!!!]"); } }; LoomHelper.QueueOnMainThread(RunOnMainThread); }
static NetErrorHelper() { NetErrorHelper.niceStrings = new Dictionary <NetError, string>(Enum.GetValues(typeof(NetError)).Length); NetErrorHelper.CacheNiceStrings(); uLink.NetworkConnectionError networkConnectionError = uLink.NetworkConnectionError.NoError; IEnumerator enumerator = Enum.GetValues(typeof(uLink.NetworkConnectionError)).GetEnumerator(); try { while (enumerator.MoveNext()) { object current = enumerator.Current; if ((int)current >= (int)networkConnectionError) { continue; } networkConnectionError = (uLink.NetworkConnectionError)((int)current); } } finally { IDisposable disposable = enumerator as IDisposable; if (disposable == null) { } disposable.Dispose(); } if (networkConnectionError != uLink.NetworkConnectionError.InternalDirectConnectFailed) { Debug.LogWarning(string.Concat(new object[] { "Most Negative Base ", networkConnectionError, " (", (int)networkConnectionError, ")" })); } }
public static string NiceString(this NetError value) { string str; if (NetErrorHelper.niceStrings.TryGetValue(value, out str)) { return(str); } return(NetErrorHelper.FallbackNiceString(value)); }
private void OnReceiveData(S2C_MSG_DATA value) { if (value.ErrorCode < 0) { Action RunOnMainThread = () => { NetErrorHelper.DoErrorCode(value.ErrorCode); }; Loom.QueueOnMainThread(RunOnMainThread); _recvStream.Clear(); return; } byte[] bytes = value.Data.ToByteArray(); _recvStream.AddBytes(bytes); while (_recvStream.BytesAvailable >= 4) { int msgId = _recvStream.ReadInt(); //消息id int msgLen = _recvStream.ReadInt(); //消息长度 byte[] msgData = _recvStream.ReadBytes(msgLen); if (_dictNetHandle.ContainsKey(msgId)) { NetMsgEventHandle handle = _dictNetHandle[msgId]; NetMsgRecvData data = NetPacketHelper.Read(msgId, msgData, handle); if (data != null) { _lstRecvDatas.Add(data); } } else { Logger.LogWarning("[GameServer.OnReceiveData() => 消息号:" + msgId + "未注册]"); } } _recvStream.Clear(); }