Пример #1
0
        private void HandleInboundData(IBuffer buffer, IConnection connection)
        {
            if (buffer == default(IBuffer))
            {
                return;
            }

            if (buffer.Length < 1)
            {
                return;
            }

            if (PreProcessHandler != null)
            {
                if (!PreProcessHandler.Invoke(connection, buffer.Length))
                {
                    return;
                }
            }

            // Incorporate Ceras
            var data = buffer.ToBytes();

            // Get Packet From Data using MessagePack
            var packet = (IPacket)MessagePacker.Instance.Deserialize(data);

            if (packet != null)
            {
                if (Handler != null)
                {
                    // Pass packet to handler.
                    Handler(connection, packet);
                }
                else
                {
                    Log.Error("Handler == null, this shouldn't happen! Tell JC");
                    Disconnect(connection, NetworkStatus.Unknown.ToString());
                }
            }
            else
            {
                Disconnect(connection, NetworkStatus.VersionMismatch.ToString());
            }
        }
Пример #2
0
        private void HandleInboundData(IBuffer buffer, IConnection connection)
        {
            if (buffer == default(IBuffer))
            {
                return;
            }

            if (buffer.Length < 1)
            {
                return;
            }

            if (PreProcessHandler != null)
            {
                if (!PreProcessHandler.Invoke(connection, buffer.Length))
                {
                    return;
                }
            }

            //Incorperate Ceras
            var data = buffer.ToBytes();

            //Get Packet From Data using Ceras
            var sw = new Stopwatch();

            sw.Start();
            var packet = (IPacket)connection.Ceras.Deserialize(data);

            if (sw.ElapsedMilliseconds > 10)
            {
                Debug.WriteLine(
                    "Took " + sw.ElapsedMilliseconds + "ms to deserialize packet: " + packet.GetType().Name
                    );
            }

            //Handle any packet identification errors

            //Pass packet to handler.
            Handler.Invoke(connection, packet);
        }
Пример #3
0
 /// <summary>
 /// Sets the PreProcessing Handler on a specific session
 /// </summary>
 /// <param name="sessionId"></param>
 /// <param name="handler"></param>
 public static void SetBeforeProcessHandler(string sessionId, PreProcessHandler handler)
 {
     Handler.GetSessionHandler(sessionId).SetPreProcessHandler(handler);
 }
Пример #4
0
 /// <summary>
 /// Sets the the PreProcessing Handler on the default session.
 /// </summary>
 /// <param name="handler"></param>
 public static void SetPreProcessHandler(PreProcessHandler handler)
 {
     Handler.DefaultHandler.SetPreProcessHandler(handler);
 }
Пример #5
0
 /// <summary>
 /// 设置预处理器
 /// </summary>
 /// <param name="handler"></param>
 internal void SetPreProcessHandler(PreProcessHandler handler)
 {
     externalPreProcessingHandler += handler;
 }
Пример #6
0
 /// <summary>
 /// Sets the PreProcessing Handler on a specific session
 /// </summary>
 /// <param name="sessionId"></param>
 /// <param name="handler"></param>
 public static void SetBeforeProcessHandler(string sessionId, PreProcessHandler handler)
 {
     Handler.GetSessionHandler(sessionId).SetPreProcessHandler(handler);
 }
Пример #7
0
 /// <summary>
 /// Sets the the PreProcessing Handler on the default session.
 /// </summary>
 /// <param name="handler"></param>
 public static void SetPreProcessHandler(PreProcessHandler handler)
 {
     Handler.DefaultHandler.SetPreProcessHandler(handler);
 }