Esempio n. 1
0
        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();
 }
Esempio n. 3
0
 public override void Deserialize(NetworkReader reader)
 {
     proxyId            = reader.ReadInt16();
     packet.Compression = (VoiceChatCompression)reader.ReadInt16();
     packet.Length      = reader.ReadInt32();
     packet.Data        = reader.ReadBytesAndSize();
 }
Esempio n. 4
0
        /// <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));
        }
Esempio n. 5
0
        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)}");
                    }
                }
            }
        }
Esempio n. 6
0
    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;
        //}
    }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
 public void Deserialize(NetworkReader reader)
 {
     bodyOrMaster = (GameObjectType)reader.ReadByte();
     ownerId      = reader.ReadNetworkId();
     numbering    = reader.ReadInt16();
     targetId     = reader.ReadNetworkId();
 }
Esempio n. 9
0
        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;
     }
       }
 }
Esempio n. 14
0
 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;
 }
Esempio n. 15
0
        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;
   }
 }
Esempio n. 18
0
 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;
 }