protected override void DecodePackage(NetReader reader) { actionResult["num"] = reader.getInt(); actionResult["level"] = reader.getInt(); actionResult["target"] = reader.getInt(); WebLogic.Instance.RadioCallBack(actionResult); }
static int recordEnd(IntPtr L) { NetReader reader = (NetReader)LuaScriptMgr.GetNetObjectSelf(L, 1, "NetReader"); reader.recordEnd(); return(0); }
public override void Connect( IPAddress address, int port ) { socket = new Socket( address.AddressFamily, SocketType.Stream, ProtocolType.Tcp ); try { socket.Connect( address, port ); } catch( SocketException ex ) { ErrorHandler.LogError( "connecting to server", ex ); game.Disconnect( "&eUnable to reach " + address + ":" + port, "Unable to establish an underlying connection" ); Dispose(); return; } NetworkStream stream = new NetworkStream( socket, true ); reader = new NetReader( stream ); writer = new NetWriter( stream ); gzippedMap = new FixedBufferStream( reader.buffer ); envMapAppearanceVer = 2; blockDefinitionsExtVer = 2; needD3Fix = false; Disconnected = false; receivedFirstPosition = false; lastPacket = DateTime.UtcNow; game.WorldEvents.OnNewMap += OnNewMap; MakeLoginPacket( game.Username, game.Mppass ); SendPacket(); lastPacket = DateTime.UtcNow; }
void HandleDefineBlockCommonEnd(NetReader reader, byte shape, byte id) { BlockInfo info = game.BlockInfo; byte blockDraw = reader.ReadUInt8(); if (shape == 0) { blockDraw = DrawType.Sprite; } info.LightOffset[id] = info.CalcLightOffset(id); byte fogDensity = reader.ReadUInt8(); info.FogDensity[id] = fogDensity == 0 ? 0 : (fogDensity + 1) / 128f; info.FogColour[id] = new FastColour( reader.ReadUInt8(), reader.ReadUInt8(), reader.ReadUInt8()); info.Tinted[id] = info.FogColour[id] != FastColour.Black && info.Name[id].IndexOf('#') >= 0; info.SetBlockDraw(id, blockDraw); info.CalcRenderBounds(id); info.UpdateCulling(id); game.Events.RaiseBlockDefinitionChanged(); info.DefinedCustomBlocks[id >> 5] |= (1u << (id & 0x1F)); }
public void REC_NewLocalPlayer(NetReader reader) { int playerNumber = reader.ReadInt(); NetworkID vehicleID = NetworkID.GetDataFromBytes(reader); // create local player mapping LocalPlayer newPlayer = new LocalPlayer(); newPlayer.playerNumber = playerNumber; newPlayer.vehicleID = vehicleID; Debug.Log(vehicleID); // TODO assign the vehicle NetObjectID id = NetworkManager.GetObjectForID(vehicleID); Debug.Log(id); BaseCar car = id.GetComponent <BaseCar>(); // assign our vehicle to follow Debug.Log("Got local player info from server!"); localPlayers.Add(newPlayer); Camera.main.GetComponent <RaceCamera>().SetCameraTarget(car.thisTransform); HasClient = true; }
protected override void DecodePackage(NetReader reader) { if (reader != null && reader.StatusCode == 0) { actionResult = new ActionResult(); byte[] data = reader.Buffer; actionResult["data"] = data; if (data.Length > 4) { int bodyLen = data.Length - 4; byte[] stc = new byte[4]; byte[] body = new byte[bodyLen]; Buffer.BlockCopy(data, 0, stc, 0, 4); Buffer.BlockCopy(data, 4, body, 0, bodyLen); STC eStc = (STC)BitConverter.ToInt32(stc, 0); Action <byte[]> callback; if (NetWork.mRegsterBytesSTC.TryGetValue(eStc, out callback)) { callback(body); } } } }
internal void ReadDefinePartPacket(NetReader reader) { ushort partId = reader.ReadUInt16(); byte type = reader.ReadUInt8(); Vector3 min = ReadVector(reader); Vector3 max = ReadVector(reader); }
public static Base Parse(Client client, Coob coob) { NetReader reader = client.Reader; var shoot = new Shoot(client); shoot.EntityId = reader.ReadUInt64(); shoot.ChunkX = reader.ReadInt32(); shoot.ChunkY = reader.ReadInt32(); shoot.something5 = reader.ReadUInt32(); reader.ReadBytes(4); shoot.Position = reader.ReadQVector3(); shoot.something13 = reader.ReadUInt32(); shoot.something14 = reader.ReadUInt32(); shoot.something15 = reader.ReadUInt32(); shoot.Velocity = reader.ReadVector3(); shoot.something19 = reader.ReadSingle(); shoot.something20 = reader.ReadSingle(); shoot.something21 = reader.ReadSingle(); shoot.something22 = reader.ReadSingle(); shoot.something23 = reader.ReadUInt32(); shoot.something24 = reader.ReadByte(); reader.ReadBytes(3); shoot.something25 = reader.ReadUInt32(); shoot.something26 = reader.ReadByte(); reader.ReadBytes(3); shoot.something27 = reader.ReadUInt32(); shoot.something28 = reader.ReadUInt32(); coob.World.ShootPackets.Add(shoot); return(shoot); }
protected override void DecodePackage(NetReader reader) { if (reader != null && reader.StatusCode == 0) { Debug.Log("1000 response ok."); } }
public IProtocol(Game game) { this.game = game; net = (NetworkProcessor)game.Server; reader = net.reader; writer = net.writer; }
void HandleDefineBlockCommonEnd(NetReader reader, byte shape, BlockID block) { byte blockDraw = reader.ReadUInt8(); if (shape == 0) { BlockInfo.SpriteOffset[block] = blockDraw; blockDraw = DrawType.Sprite; } BlockInfo.LightOffset[block] = BlockInfo.CalcLightOffset(block); byte fogDensity = reader.ReadUInt8(); BlockInfo.FogDensity[block] = fogDensity == 0 ? 0 : (fogDensity + 1) / 128f; BlockInfo.FogColour[block] = new FastColour( reader.ReadUInt8(), reader.ReadUInt8(), reader.ReadUInt8()); BlockInfo.Tinted[block] = BlockInfo.FogColour[block] != FastColour.Black && BlockInfo.Name[block].IndexOf('#') >= 0; BlockInfo.SetBlockDraw(block, blockDraw); BlockInfo.CalcRenderBounds(block); BlockInfo.UpdateCulling(block); game.Inventory.AddDefault(block); BlockInfo.SetCustomDefined(block, true); game.Events.RaiseBlockDefinitionChanged(); }
/// <summary> /// http respond /// </summary> /// <param name="package"></param> public void OnHttpRespond(HttpPackage package) { if (package.error != null) { OnNetError(package.ActionId, package.error); } else if (package.IsOverTime) { OnNetTimeOut(package.ActionId); } else { NetReader reader = package.Reader; byte[] buffBytes = package.GetResponse(); if (reader.pushNetStream(buffBytes, NetworkType.Http, NetWriter.ResponseContentType)) { if (reader.Success) { OnRespond(package); } else { OnNetError(package.ActionId, reader.Description); } } } }
protected override void DecodePackage(NetReader reader) { responsePack = JsonUtil.DeserializeObject <GameSettlementResp>(reader.readString()); if (responsePack != null) { } }
protected override void DecodePackage(NetReader reader) { if (reader.StatusCode == 0) { if (isCustom) { //自定对象格式解包 _responseData = ProtoBufUtils.Deserialize <Response1001Pack>(reader.Buffer); } else { //默认Scut流格式解包 _responseData = new Response1001Pack(); _responseData.PageCount = reader.getInt(); int nNum = reader.getInt(); _responseData.Items = new List <RankData>(); for (int i = 0; i < nNum; i++) { reader.recordBegin(); RankData item = new RankData(); item.UserName = reader.readString(); item.Score = reader.getInt(); reader.recordEnd(); _responseData.Items.Add(item); } } } }
protected override void DecodePackage(NetReader reader) { responsePack = new ResponseDefaultPacket() { Result = reader.getInt() }; }
void Init() { if (hasInit) { return; } writer = new NetWriter(); reader = new NetReader(); writeData = new byte[NetworkCore.MAX_DATA_SIZE]; sceneIDs = new Pair <NetObjectID, bool> [256]; gameIDs = new Pair <NetObjectID, bool> [256]; for (int i = 0; i < 256; i++) { sceneIDs[i] = new Pair <NetObjectID, bool>(); gameIDs[i] = new Pair <NetObjectID, bool>(); } HasJoinedGame = false; // load up all the network functions RegisterAllFunctions(); // load up the prefabs RegisterAllPrefabs(); // link into the scene loading SceneManager.sceneLoaded += OnSceneLoaded; // notify all objects in this scene that the network scene has loaded //OnSceneLoaded(SceneManager.GetActiveScene(), LoadSceneMode.Single); hasInit = true; }
// Attempts to connect to a specified server with a given connection message public bool Connect(IPEndPoint Server, ConnectMessage ConnectionMessage) { // Initialise socket for TCP/IP communications Inner = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { // Try to connect Inner.Connect(Server); // Set up IO streams around the socket Stream = new NetworkStream(Inner); In = new NetReader(Stream); Out = new NetWriter(Stream); // Send off the initial connection message Send(ConnectionMessage); // Begin reading from the Server StartRead(); return(true); } catch { return(false); } }
protected override void DecodePackage(NetReader reader) { if (reader.StatusCode == 0) { if (isCustom) { //自定对象格式解包 _responseData = ProtoBufUtils.Deserialize<Response1001Pack>(reader.Buffer); } else { //默认Scut流格式解包 _responseData = new Response1001Pack(); _responseData.PageCount = reader.getInt(); int nNum = reader.getInt(); _responseData.Items = new List<RankData>(); for (int i = 0; i < nNum; i++) { reader.recordBegin(); RankData item = new RankData(); item.UserName = reader.readString(); item.Score = reader.getInt(); reader.recordEnd(); _responseData.Items.Add(item); } } } }
void RecvClientInputs(NetReader reader) { // find the correct client for this input ClientInputMapping record = clientInputs[reader.connectionId]; if (record == null) { Debug.LogWarning("no client input record exists for client " + reader.connectionId); return; } // read the data byte clientTick = reader.ReadByte(); byte numPlayers = reader.ReadByte(); for (int i = 0; i < numPlayers; i++) { PlayerInput input = new PlayerInput(); input.tick = clientTick; input.driveInput = reader.ReadFloat(); input.steerInput = reader.ReadFloat(); input.useInput = reader.ReadFloat(); ClientInputMapping mapping = clientInputs[reader.connectionId]; mapping.pairs[i].pPlayer.AddInput(input); } }
protected override void DecodePackage(NetReader reader) { responsePack = new Response1004Packet() { Result = reader.getInt() }; if (responsePack.SuccessOrUpdate) { responsePack.LoginResp = JsonUtil.DeserializeObject <LoginResp>(reader.readString()); if (responsePack.Success) { UIModelMgr.Instance.GetModel <UIMainModel>().SetShareInfos(responsePack.LoginResp.ShareInfos); NetWriter.setUserID(ulong.Parse(responsePack.LoginResp.UserId)); NetWriter.setSessionID(responsePack.LoginResp.SessionId); Debug.Log("SessionId ================= " + responsePack.LoginResp.SessionId); Net.Instance.ReBuildHearbeat(); UIModelMgr.Instance.GetModel <UIGameModel>().ClearGameEndDatas(); } else { UIDialogMgr.Instance.ShowDialog(responsePack.Result, delegate(GameObject go) { Application.OpenURL(responsePack.LoginResp.ApkUpdateWebsite); }); } } else { UIDialogMgr.Instance.ShowDialog(responsePack.Result); } }
internal static TempObjID GetDataFromBytes(NetReader reader) { int id = reader.ReadInt(); int pref = reader.ReadInt(); return(new TempObjID(id, pref)); }
/// <summary> /// http respond /// </summary> /// <param name="package"></param> /// <param name="userdata"></param> public void OnHttpRespond(HttpPackage package, object userdata) { if (package.error != null) { OnNetError(package.Tag, package.error.ToString()); } else if (package.overTime) { OnNetTimeOut(package.Tag); } else { NetReader reader = new NetReader(); reader.pushNetStream(package.buf, NetworkType.Http); ServerResponse.ResponseData data = null; bool bRet = true; if (reader.ActionId != 0)//获取服务器列表比较特殊没有协议头 { if (CommonCallback != null) { bRet = CommonCallback(reader); } } if (bRet) { data = ServerResponse.Instance.GetData(reader); ProcessBodyData(data, userdata, package.FuncCallback); } reader = null; } }
/// <summary> /// [系统邮件]获取系统邮件 /// </summary> private IResponse Decode_1000(NetReader reader) { if (reader.getInt() > 0) { } return(new ScoreObject()); }
void CL_RemoveNetObject(NetReader reader) { TempObjID objID = TempObjID.GetDataFromBytes(reader); Debug.Log("removing object with id " + objID.IDNum); RemoveLocalNetObject(objID); }
protected override void DecodePackage(NetReader reader) { responsePack = new Response1002Packet() { PassportID = reader.readString() }; }
public static Message ReadMessage(NetReader Reader) { try { if (MessageTypes == null) { RegenMessageTypes(); // Load message classes if necessary } string Id = Reader.ReadString(); // Read the type foreach (Type t in MessageTypes) { if (t.Name == Id) // Found the right class { // Create an object of the class, deserialise to it and return Message m = (Message)Activator.CreateInstance(t); m.Deserialise(Reader); return(m); } } throw new Exception("Invalid Type received"); // No matching class found } catch (MissingMethodException e) { // MissingMethodException is thrown if a subclass of Message can't be constructed throw new Exception("All Message subclasses must define a public parameterless constructor.", e); } }
protected override void DecodePackage(NetReader reader) { string msgPush = reader.readString(); //UnityEngine.Debug.logger.Log(); EventService.Instance.GetEvent <Action2006Event>().Publish(msgPush); Net.Instance.ReBuildHearbeat(); }
internal void ReadRotationPacket(NetReader reader) { ushort partId = reader.ReadUInt16(); byte order = reader.ReadUInt8(); RotateData rotX = ReadRotateData(reader); RotateData rotY = ReadRotateData(reader); RotateData rotZ = ReadRotateData(reader); }
protected override void DecodePackage(NetReader reader) { actionResult["player1"] = reader.readString(); actionResult["player2"] = reader.readString(); actionResult["player3"] = reader.readString(); actionResult["player4"] = reader.readString(); WebLogic.Instance.RadioCallBack(actionResult); }
public static NetworkID GetDataFromBytes(NetReader reader) { NetworkID id = new NetworkID(); id.idNumber = reader.ReadByte(); id.type = (NetworkIDType)reader.ReadByte(); return(id); }
/// <summary> /// [系统邮件]获取系统邮件 /// </summary> private IResponse Decode_1000(NetReader reader) { if (reader.getInt() > 0) { } return new ScoreObject(); }
protected override void DecodePackage(NetReader reader) { responsePack = JsonUtil.DeserializeObject <GameEndActionResp>(reader.readString()); if (responsePack != null) { GameLogicMgr.Instance.OperateGameEnd(responsePack); } }
protected override void DecodePackage(NetReader reader) { LogicMsg.AskAddRoomResp resp = LogicMsg.AskAddRoomResp.Parser.ParseFrom(reader.Buffer); m_result = new ActionResult(); m_result["State"] = resp.State; Debug.Log("resp.State: " + resp.State); }
protected override void DecodePackage(NetReader reader) { //Debug.Log("Action1001: DecodePackage()"); if (reader.StatusCode == 0) { //自定对象格式解包 //_responseData = ProtoBufUtils.Deserialize<MessagePack>(reader.Buffer); } }
protected override void DecodePackage(NetReader reader) { actionResult = new ActionResult(); actionResult["passportID"] = reader.readString(); actionResult["password"] = reader.readString(); //TODO:登录服务器获取账号 //var passport = reader.readValue<Passport>(); //actionResult["passportID"] = passport.PassportId; //actionResult["password"] = passport.Password; }
protected override void DecodePackage(NetReader reader) { if (reader.StatusCode == 0) { _obj = ProtoBufUtils.Deserialize<ShareEntityProto>(reader.Buffer); } else { UnityEngine.Debug.LogError(this.GetType() + ".DecodePackage(): reader.StatusCode = " + reader.StatusCode); } }
protected override void DecodePackage(NetReader reader) { if (reader.StatusCode == 0) { _msg = ProtoBufUtils.Deserialize<LoginMessage>(reader.Buffer); } else { Debug.LogError(this.GetType() + ".DecodePackage(): reader.StatusCode = " + reader.StatusCode); } }
/// <summary> /// 尝试解Body包 /// </summary> /// <param name="reader"></param> /// <returns></returns> public bool TryDecodePackage(NetReader reader) { try { DecodePackage(reader); return true; } catch (Exception ex) { Debug.Log(string.Format("Action {0} decode package error:{1}", ActionId, ex)); return false; } }
protected override void DecodePackage(NetReader reader) { //Debug.Log("Action1000: DecodePackage()"); if (reader.StatusCode == 0) { //自定对象格式解包 //_responseData = ProtoBufUtils.Deserialize<MessagePack>(reader.Buffer); } else { Debug.LogError(this.GetType() + ".DecodePackage(): reader.StatusCode = " + reader.StatusCode); } }
protected override void DecodePackage(NetReader reader) { actionResult = new ActionResult(); //默认Scut流格式解包 actionResult["RoleID"] = reader.getInt(); actionResult["RoleName"] = reader.readString(); actionResult["HeadImg"] = reader.readString(); actionResult["Sex"] = reader.getByte(); actionResult["LvNum"] = reader.getInt(); actionResult["ExperienceNum"] = reader.getInt(); actionResult["LifeNum"] = reader.getInt(); actionResult["LifeMaxNum"] = reader.getInt(); GameSetting.Instance.RoleName = actionResult.Get<string>("RoleName"); }
protected override void DecodePackage(NetReader reader) { actionResult = new ActionResult(); //默认Scut流格式解包 actionResult["SessionID"] = reader.readString(); actionResult["UserID"] = reader.readString(); actionResult["UserType"] = reader.getInt(); actionResult["LoginTime"] = reader.readString(); actionResult["GuideID"] = reader.getInt(); actionResult["PassportId"] = reader.readString(); actionResult["RefeshToken"] = reader.readString(); actionResult["QihooUserID"] = reader.readString(); actionResult["Scope"] = reader.readString(); NetWriter.setUserID(ulong.Parse(actionResult["UserID"].ToString())); NetWriter.setSessionID(actionResult.Get<string>("SessionID")); }
public IResponse GetResponse(NetReader reader, int ActionId) { IResponse r = null; switch (ActionId) { case 1000: r = Decode_1000(reader); break; case 1001: r = Decode_1001(reader); break; default: r = null; break; } return r; }
protected override void DecodePackage(NetReader reader) { if (!reader.Success) { Debug.LogError(string.Format("Action {0} error {1}-{2}", reader.ActionId, reader.StatusCode, reader.Description)); return; } actionResult = new ActionResult(); //默认Scut流格式解包 actionResult["RoleID"] = reader.getInt(); actionResult["RoleName"] = reader.readString(); actionResult["HeadImg"] = reader.readString(); actionResult["Sex"] = reader.getByte(); actionResult["LvNum"] = reader.getInt(); actionResult["ExperienceNum"] = reader.getInt(); actionResult["LifeNum"] = reader.getInt(); actionResult["LifeMaxNum"] = reader.getInt(); GameSetting.Instance.RoleName = actionResult.Get<string>("RoleName"); }
private IResponse Decode_1001(NetReader reader) { Resopnse_1001 ret = null; if (reader.StatusCode == 0) { ret = new Resopnse_1001(); ret.PageCount = reader.getInt(); int nNum = reader.getInt(); ret.items = new List<Item>(); for (int i = 0; i < nNum; i ++ ) { reader.recordBegin(); Item item = new Item(); item.UserName = reader.readString(); item.Score = reader.getInt(); reader.recordEnd(); ret.items.Add(item); } } return ret; }
protected override void DecodePackage(NetReader reader) { if (!reader.Success) { Debug.LogError(string.Format("Action {0} error {1}-{2}", reader.ActionId, reader.StatusCode, reader.Description)); return; } actionResult = new ActionResult(); //默认Scut流格式解包 int length = reader.Buffer.Length; while (reader.CurrentPos < reader.Buffer.Length) { int count = reader.getInt(); length -= count; StaticSever server = new StaticSever(); server.Id = reader.getInt(); server.Name = reader.readString(); server.Ip = reader.readString(); server.Port = reader.getInt(); serverList.Add(server); } Debug.Log(serverList); }
protected override void DecodePackage(NetReader reader) { actionResult = new ActionResult(); actionResult["passportID"] = reader.readString(); actionResult["password"] = reader.readString(); }
/// <summary> /// http respond /// </summary> /// <param name="package"></param> /// <param name="userdata"></param> public void OnHttpRespond(HttpPackage package, object userdata) { if (package.error != null) { OnNetError(package.Tag, package.error.ToString()); } else if (package.overTime) { OnNetTimeOut(package.Tag); } else { NetReader reader = new NetReader(); reader.pushNetStream(package.buf, NetworkType.Http); ServerResponse.ResponseData data = null; bool bRet = true; if (reader.ActionId != 0)//��ȡ�������б�Ƚ�����û��Э��ͷ { if (CommonCallback != null) { bRet = CommonCallback(reader); } } if (bRet) { data = ServerResponse.Instance.GetData(reader); ProcessBodyData(data, userdata, package.FuncCallback); } reader = null; } }
public ResponseData GetData(NetReader reader) { ResponseData data = new ResponseData(); data.ActionId = reader.ActionId; data.ErrorCode = reader.StatusCode; data.ErrorMsg = reader.Description; IResponse ret = null; if (data.ErrorCode == Net.Instance.NetSuccess) { ret = GetResponse(reader, data.ActionId); } data.Resonse = ret; return data; }
protected override void DecodePackage(NetReader reader) { }
public bool CommonData(NetReader reader) { bool bRet = true; return bRet; }
//(object state) private void CheckReceive() { while (true) { if (socket == null) return; try { if (socket.Poll(5, SelectMode.SelectRead)) { if (socket.Available == 0) { UnityEngine.Debug.Log("Close Socket"); Close(); break; } byte[] prefix = new byte[4]; int recnum = socket.Receive(prefix); if (recnum == 4) { int datalen = BitConverter.ToInt32(prefix, 0); byte[] data = new byte[datalen]; int startIndex = 0; recnum = 0; do { int rev = socket.Receive(data, startIndex, datalen - recnum, SocketFlags.None); recnum += rev; startIndex += rev; } while (recnum != datalen); if (data[0] == 0x1f && data[1] == 0x8b && data[2] == 0x08 && data[3] == 0x00) { data = NetReader.Decompression(data); } NetReader reader = new NetReader(); reader.pushNetStream(data, NetworkType.Http); SocketPackage findPackage = null; UnityEngine.Debug.Log("socket.Poll ok" + recnum + "actionId:" + reader.ActionId + " " + reader.RmId.ToString() + "len" + datalen.ToString()); lock (sendList) { foreach (SocketPackage package in sendList) { if (package.MsgId == reader.RmId) { package.Reader = reader; package.ErrorCode = (int)ErrorCode.eSuccess; package.ErrorMsg = "success"; findPackage = package; break; } } } foreach (SocketPackage package in pushActionList) { if (package.ActionId == reader.ActionId) { package.Reader = reader; package.ErrorCode = (int)ErrorCode.eSuccess; package.ErrorMsg = "success"; findPackage = package; } } if (findPackage != null) { lock (receiveQueue) { receiveQueue.Enqueue(findPackage); } lock (sendList) { sendList.Remove(findPackage); } } } } else if (socket.Poll(5, SelectMode.SelectError)) { Close(); UnityEngine.Debug.Log("SelectError Close Socket"); break; } } catch (Exception ex) { UnityEngine.Debug.Log("catch" + ex.ToString()); } Thread.Sleep(5); } }
private void CheckReceive() { while (true) { if (_socket == null) return; try { if (_socket.Poll(5, SelectMode.SelectRead)) { if (_socket.Available == 0) { Debug.Log("Close Socket"); Close(); break; } byte[] prefix = new byte[4]; int recnum = _socket.Receive(prefix); if (recnum == 4) { int datalen = BitConverter.ToInt32(prefix, 0); byte[] data = new byte[datalen]; int startIndex = 0; recnum = 0; do { int rev = _socket.Receive(data, startIndex, datalen - recnum, SocketFlags.None); recnum += rev; startIndex += rev; } while (recnum != datalen); //判断流是否有Gzip压缩 if (data[0] == 0x1f && data[1] == 0x8b && data[2] == 0x08 && data[3] == 0x00) { data = NetReader.Decompression(data); } NetReader reader = new NetReader(_formater); reader.pushNetStream(data, NetworkType.Socket, NetWriter.ResponseContentType); SocketPackage findPackage = null; Debug.Log("Socket receive ok, revLen:" + recnum + ", actionId:" + reader.ActionId + ", msgId:" + reader.RmId + ", error:" + reader.StatusCode + reader.Description + ", packLen:" + reader.Buffer.Length); lock (_sendList) { //find pack in send queue. foreach (SocketPackage package in _sendList) { if (package.MsgId == reader.RmId) { package.Reader = reader; package.ErrorCode = reader.StatusCode; package.ErrorMsg = reader.Description; findPackage = package; break; } } } if (findPackage == null) { lock (_receiveQueue) { //find pack in receive queue. foreach (SocketPackage package in ActionPools) { if (package.ActionId == reader.ActionId) { package.Reader = reader; package.ErrorCode = reader.StatusCode; package.ErrorMsg = reader.Description; findPackage = package; break; } } } } if (findPackage != null) { lock (_receiveQueue) { _receiveQueue.Enqueue(findPackage); } lock (_sendList) { _sendList.Remove(findPackage); } } else { //server push pack. SocketPackage package = new SocketPackage(); package.MsgId = reader.RmId; package.ActionId = reader.ActionId; package.ErrorCode = reader.StatusCode; package.ErrorMsg = reader.Description; package.Reader = reader; lock (_pushQueue) { _pushQueue.Enqueue(package); } } } } else if (_socket.Poll(5, SelectMode.SelectError)) { Close(); UnityEngine.Debug.Log("SelectError Close Socket"); break; } } catch (Exception ex) { UnityEngine.Debug.Log("catch" + ex.ToString()); } Thread.Sleep(5); } }
protected override void DecodePackage(NetReader reader) { actionResult = new ActionResult(); }
protected abstract void DecodePackage(NetReader reader);