public override void Deserialize(NetworkReader reader) { Int16 count = reader.ReadInt16(); //Debug.Log("pointer updates "+count); for (int n = 0; n < count; n++) { pointerUpdates.Add(new PointerUpdateBundled()); #if LOGVERBOSE DebugLog += pointerUpdates[n].Deserialize(ref reader); #else pointerUpdates[n].Deserialize(ref reader); #endif } // Task updates next. First get the number of messages, then deserialise them. count = reader.ReadInt16(); //Debug.Log("task updates "+count); for (int n = 0; n < count; n++) { taskUpdates.Add(new TaskUpdateBundled()); #if LOGVERBOSE DebugLog += taskUpdates[n].Deserialize(ref reader); #else taskUpdates[n].Deserialize(ref reader); #endif } }
public override void Deserialize(NetworkReader reader) { proxyId = reader.ReadInt16(); packet.Compression = (VoiceChatCompression)reader.ReadInt16(); packet.Length = reader.ReadInt32(); packet.Data = reader.ReadBytesAndSize(); }
public override void Deserialize(NetworkReader reader) { proxyId = reader.ReadInt16(); packet.Compression = (VoiceChatCompression)reader.ReadInt16(); packet.Length = reader.ReadInt32(); packet.Data = reader.ReadBytesAndSize(); }
/// <summary> /// Reads a compressed quaternion from a reader. /// </summary> /// <param name="reader"></param> /// <returns></returns> public static Quaternion ReadCompressedQuaternion(NetworkReader reader) { byte largest = reader.ReadByte(); short a = 0, b = 0, c = 0; if (!Quaternions.UseLargestOnly(largest)) { a = reader.ReadInt16(); b = reader.ReadInt16(); c = reader.ReadInt16(); } return(Quaternions.DecompressQuaternion(largest, a, b, c)); }
public void ProcessUNetMessage(byte[] rawPacket) { var unetBytes = UNetMessage.Deserialize(rawPacket); var reader = new NetworkReader(unetBytes); while (reader.Position < unetBytes.Length) { var msg = new NetworkMessage(); msg.msgSeqNum = reader.ReadUInt32(); var msgSize = reader.ReadUInt16(); msg.msgType = reader.ReadInt16(); var buffer = reader.ReadBytes(msgSize); msg.reader = new NetworkReader(buffer); var deserialized = Deserialize(msg, buffer); if (deserialized != null) { if (_handlers.ContainsKey(deserialized.msgType)) { if (deserialized.GetType() != typeof(AssetsLoadingProgress)) { Log.Print(LogType.Game, $"{deserialized.GetType().Name} - {JsonConvert.SerializeObject(deserialized)}"); } _handlers[deserialized.msgType].Invoke(deserialized); } else { Log.Print(LogType.Warning, $"Unhandled {msg.msgType}:{deserialized.GetType().Name} - {JsonConvert.SerializeObject(deserialized)}"); } } } }
public static void HandleNetworkDataEvent(byte[] dataBuffer, int dataSize) { NetworkReader reader = new NetworkReader(dataBuffer); EMessageType type = (EMessageType)reader.ReadInt16(); Debug.Log("Received message type " + (int)type); // things that change on adding a new message: // add to types, create new event, create new case to launch that event // without switching for type: // deserialize the messagebase = [type, inst] MessageBase msg = typeToInstance[type]; msg.Deserialize(reader); messageDelegates[type](msg); // deserialize and raise events based on message type //switch (type) //{ // case EMessageType.Connect: // ConnectMessage cMsg = new ConnectMessage(); // cMsg.Deserialize(reader); // // raise the event // //OnConnectMessage(cMsg); // dels[0](cMsg); // break; //} }
public virtual void TransportReceive(ArraySegment <byte> data) { // unpack message NetworkReader reader = new NetworkReader(data); short msgType = reader.ReadInt16(); int callbackId = reader.ReadInt32(); InsightNetworkMessageDelegate msgDelegate; if (m_MessageHandlers.TryGetValue(msgType, out msgDelegate)) { // create message here instead of caching it. so we can add it to queue more easily. InsightNetworkMessage msg = new InsightNetworkMessage(this, callbackId); msg.msgType = msgType; msg.reader = reader; msgDelegate(msg); lastMessageTime = Time.time; } else { //NOTE: this throws away the rest of the buffer. Need moar error codes Debug.LogError("Unknown message ID " + msgType + " connId:" + connectionId); } }
public void Deserialize(NetworkReader reader) { bodyOrMaster = (GameObjectType)reader.ReadByte(); ownerId = reader.ReadNetworkId(); numbering = reader.ReadInt16(); targetId = reader.ReadNetworkId(); }
public static T Read2 <T>(NetworkReader reader) { BWrite2 <T> proxy = default(BWrite2 <T>); proxy.v1 = reader.ReadInt16(); return(proxy.val); }
/// <summary> /// <para>This makes the connection process the data contained in the stream, and call handler functions.</para> /// </summary> /// <param name="reader">Stream that contains data.</param> /// <param name="receivedSize">Size of the data.</param> /// <param name="channelId">Channel the data was received on.</param> protected void HandleReader(NetworkReader reader, int receivedSize, int channelId) { while (reader.Position < receivedSize) { ushort count = reader.ReadUInt16(); short key = reader.ReadInt16(); byte[] buffer = reader.ReadBytes(count); NetworkReader reader2 = new NetworkReader(buffer); if (this.logNetworkMessages) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < count; i++) { builder.AppendFormat("{0:X2}", buffer[i]); if (i > 150) { break; } } Debug.Log(string.Concat(new object[] { "ConnectionRecv con:", this.connectionId, " bytes:", count, " msgId:", key, " ", builder })); } NetworkMessageDelegate delegate2 = null; if (this.m_MessageHandlersDict.ContainsKey(key)) { delegate2 = this.m_MessageHandlersDict[key]; } if (delegate2 != null) { this.m_NetMsg.msgType = key; this.m_NetMsg.reader = reader2; this.m_NetMsg.conn = this; this.m_NetMsg.channelId = channelId; delegate2(this.m_NetMsg); this.lastMessageTime = Time.time; NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, 0x1c, "msg", 1); if (key > 0x2f) { NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, 0, key.ToString() + ":" + key.GetType().Name, 1); } if (this.m_PacketStats.ContainsKey(key)) { PacketStat stat = this.m_PacketStats[key]; stat.count++; stat.bytes += count; } else { PacketStat stat2 = new PacketStat { msgType = key }; stat2.count++; stat2.bytes += count; this.m_PacketStats[key] = stat2; } } else { if (LogFilter.logError) { Debug.LogError(string.Concat(new object[] { "Unknown message ID ", key, " connId:", this.connectionId })); } break; } } }
internal void HandleFragment(NetworkReader reader, int channelId) { if ((channelId >= 0) && (channelId < this.m_Channels.Length)) { ChannelBuffer buffer = this.m_Channels[channelId]; if (buffer.HandleFragment(reader)) { NetworkReader reader2 = new NetworkReader(buffer.fragmentBuffer.AsArraySegment().Array); reader2.ReadInt16(); short msgType = reader2.ReadInt16(); this.InvokeHandler(msgType, reader2, channelId); } } }
/// <summary> /// <para>This makes the connection process the data contained in the stream, and call handler functions.</para> /// </summary> /// <param name="reader">Stream that contains data.</param> /// <param name="receivedSize">Size of the data.</param> /// <param name="channelId">Channel the data was received on.</param> protected void HandleReader(NetworkReader reader, int receivedSize, int channelId) { while ((long) reader.Position < (long) receivedSize) { ushort num = reader.ReadUInt16(); short key = reader.ReadInt16(); byte[] buffer = reader.ReadBytes((int) num); NetworkReader networkReader = new NetworkReader(buffer); if (this.logNetworkMessages) { StringBuilder stringBuilder = new StringBuilder(); for (int index = 0; index < (int) num; ++index) { stringBuilder.AppendFormat("{0:X2}", (object) buffer[index]); if (index > 150) break; } Debug.Log((object) ("ConnectionRecv con:" + (object) this.connectionId + " bytes:" + (object) num + " msgId:" + (object) key + " " + (object) stringBuilder)); } NetworkMessageDelegate networkMessageDelegate = (NetworkMessageDelegate) null; if (this.m_MessageHandlersDict.ContainsKey(key)) networkMessageDelegate = this.m_MessageHandlersDict[key]; if (networkMessageDelegate != null) { this.m_NetMsg.msgType = key; this.m_NetMsg.reader = networkReader; this.m_NetMsg.conn = this; this.m_NetMsg.channelId = channelId; networkMessageDelegate(this.m_NetMsg); this.lastMessageTime = Time.time; NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, (short) 28, "msg", 1); if ((int) key > 47) NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, (short) 0, key.ToString() + ":" + key.GetType().Name, 1); if (this.m_PacketStats.ContainsKey(key)) { NetworkConnection.PacketStat packetStat = this.m_PacketStats[key]; ++packetStat.count; packetStat.bytes += (int) num; } else { NetworkConnection.PacketStat packetStat = new NetworkConnection.PacketStat(); packetStat.msgType = key; ++packetStat.count; packetStat.bytes += (int) num; this.m_PacketStats[key] = packetStat; } } else { if (!LogFilter.logError) break; Debug.LogError((object) ("Unknown message ID " + (object) key + " connId:" + (object) this.connectionId)); break; } } }
internal void HandleMessage(Dictionary<short, NetworkMessageDelegate> handler, NetworkReader reader, int receivedSize, int channelId) { while ((long) reader.Position < (long) receivedSize) { ushort num = reader.ReadUInt16(); short key = reader.ReadInt16(); NetworkReader networkReader = new NetworkReader(reader.ReadBytes((int) num)); NetworkMessageDelegate networkMessageDelegate = (NetworkMessageDelegate) null; if (handler.ContainsKey(key)) networkMessageDelegate = handler[key]; if (networkMessageDelegate != null) { this.m_netMsg.msgType = key; this.m_netMsg.reader = networkReader; this.m_netMsg.conn = this; this.m_netMsg.channelId = channelId; networkMessageDelegate(this.m_netMsg); NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, (short) 28, "msg", 1); if ((int) key > 46) NetworkDetailStats.IncrementStat(NetworkDetailStats.NetworkDirection.Incoming, (short) 0, key.ToString() + ":" + key.GetType().Name, 1); if (this.m_PacketStats.ContainsKey(key)) { NetworkConnection.PacketStat packetStat = this.m_PacketStats[key]; ++packetStat.count; packetStat.bytes += (int) num; } else { NetworkConnection.PacketStat packetStat = new NetworkConnection.PacketStat(); packetStat.msgType = key; ++packetStat.count; packetStat.bytes += (int) num; this.m_PacketStats[key] = packetStat; } } else { if (!LogFilter.logError) break; Debug.LogError((object) ("Unknown message ID " + (object) key)); break; } } }
internal bool InvokeBytes(ULocalConnectionToServer conn, byte[] buffer, int numBytes, int channelId) { NetworkReader reader = new NetworkReader(buffer); int num = (int) reader.ReadInt16(); short msgType = reader.ReadInt16(); if (this.m_MessageHandlers.GetHandler(msgType) != null) { NetworkConnection networkConnection = this.m_Connections.Get(conn.connectionId); if (networkConnection != null) { ULocalConnectionToClient connectionToClient = (ULocalConnectionToClient) networkConnection; this.m_MessageHandlers.InvokeHandler(msgType, (NetworkConnection) connectionToClient, reader, channelId); return true; } } return false; }
private static float ReadAngle(NetworkReader reader, CompressionSyncMode compression) { switch (compression) { case CompressionSyncMode.None: return reader.ReadSingle(); case CompressionSyncMode.Low: return (float) reader.ReadInt16(); case CompressionSyncMode.High: return (float) reader.ReadInt16(); } return 0f; }
private static float ReadAngle(NetworkReader reader, CompressionSyncMode compression) { if (compression != CompressionSyncMode.None) { if (compression == CompressionSyncMode.Low) { return (float) reader.ReadInt16(); } if (compression == CompressionSyncMode.High) { return (float) reader.ReadInt16(); } } else { return reader.ReadSingle(); } return 0f; }
private static float ReadAngle(NetworkReader reader, NetworkTransform.CompressionSyncMode compression) { switch (compression) { case NetworkTransform.CompressionSyncMode.None: return reader.ReadSingle(); case NetworkTransform.CompressionSyncMode.Low: return (float) reader.ReadInt16(); case NetworkTransform.CompressionSyncMode.High: return (float) reader.ReadInt16(); default: return 0.0f; } }
internal bool InvokeBytes(ULocalConnectionToServer conn, byte[] buffer, int numBytes, int channelId) { NetworkReader reader = new NetworkReader(buffer); reader.ReadInt16(); short key = reader.ReadInt16(); if (handlers.ContainsKey(key) && (this.m_LocalConnection != null)) { this.m_LocalConnection.InvokeHandler(key, reader, channelId); return true; } return false; }