示例#1
0
        /// <summary>解码</summary>
        /// <param name="context"></param>
        /// <param name="pk"></param>
        /// <returns></returns>
        protected override IList <IMessage> Decode(IHandlerContext context, Packet pk)
        {
            var ss = context.Owner as IExtend;
            var pc = ss["Codec"] as PacketCodec;

            if (pc == null)
            {
                ss["Codec"] = pc = new PacketCodec {
                    GetLength = DefaultMessage.GetLength
                }
            }
            ;

            var pks  = pc.Parse(pk);
            var list = pks.Select(e =>
            {
                var msg = new DefaultMessage();
                if (!msg.Read(e))
                {
                    return(null);
                }

                return(msg as IMessage);
            }).ToList();

            return(list);
        }
示例#2
0
        /// <summary>解码</summary>
        /// <param name="context"></param>
        /// <param name="pk"></param>
        /// <returns></returns>
        protected override IList <IMessage> Decode(IHandlerContext context, Packet pk)
        {
            var ss = context.Owner as IExtend;

            if (ss["Codec"] is not PacketCodec pc)
            {
                ss["Codec"] = pc = new PacketCodec
                {
                    GetLength = DefaultMessage.GetLength,
                    Tracer    = (context.Owner as ISocket)?.Tracer
                };
            }

            var pks  = pc.Parse(pk);
            var list = pks.Select(e =>
            {
                var msg = new DefaultMessage();
                if (!msg.Read(e))
                {
                    return(null);
                }

                return(msg as IMessage);
            }).ToList();

            return(list);
        }
        public void StringDecode()
        {
            {
                var msg = new DefaultMessage();
                var rs  = msg.Decode("4,1,1:Open");
                Assert.True(rs);
                Assert.Equal(1, msg.Sequence);
                Assert.Equal(1, msg.Flag);
                Assert.Equal("Open", msg.Payload.ToStr());
            }

            {
                var msg = new DefaultMessage();
                var rs  = msg.Decode("12,1,129:执行成功");
                Assert.True(rs);
                Assert.Equal(1, msg.Sequence);
                Assert.Equal(0x81, msg.Flag);
                Assert.Equal("执行成功", msg.Payload.ToStr());
            }

            {
                var msg = new DefaultMessage();
                var rs  = msg.Decode("12,1,129:执行成功".GetBytes());
                Assert.True(rs);
                Assert.Equal(1, msg.Sequence);
                Assert.Equal(0x81, msg.Flag);
                Assert.Equal("执行成功", msg.Payload.ToStr());
            }
        }
        private void AssertThrows(Func <DefaultMessage, object> func, string message, Exception innerException)
        {
            var defaultMessage = DefaultMessage.New("Default message.");

            AssertException(Assert.Throws <TestException>(() => func(defaultMessage)));
            defaultMessage = null;
            AssertException(Assert.Throws <TestException>(() => func(defaultMessage)));

            void AssertException(Exception exception)
            {
                if (message is null)
                {
                    Assert.NotNull(exception.Message);
                    if (defaultMessage != null)
                    {
                        Assert.NotEqual(defaultMessage.ToString(), exception.Message);
                    }
                }
                else
                {
                    Assert.Equal(message, exception.Message);
                }

                if (innerException is null)
                {
                    Assert.Null(exception.InnerException);
                }
                else
                {
                    Assert.Equal(innerException, exception.InnerException);
                }
            }
        }
示例#5
0
        static void Test4()
        {
            //var buf = "hello".GetBytes();
            var ms     = new MemoryStream();
            var writer = new BinaryWriter(ms);

            writer.Write("hello");
            writer.Write(0);

            var msg = new DefaultMessage();

            msg.Payload = ms.ToArray();
            var buf = msg.ToPacket().ToArray();

            XTrace.WriteLine(buf.ToHex());

            var udp = new UdpClient();

            udp.Send(buf, buf.Length, new IPEndPoint(IPAddress.Broadcast, 5500));

            IPEndPoint ep = null;
            var        rs = udp.Receive(ref ep);

            XTrace.WriteLine(ep + "");
            XTrace.WriteLine(rs.ToStr());
        }
示例#6
0
文件: IApiHost.cs 项目: wuseyangg/X
        /// <summary>调用</summary>
        /// <param name="host"></param>
        /// <param name="session"></param>
        /// <param name="action">服务操作</param>
        /// <param name="args">参数</param>
        /// <param name="flag">标识</param>
        /// <returns></returns>
        public static Boolean Invoke(IApiHost host, IApiSession session, String action, Object args, Byte flag = 0)
        {
            if (session == null)
            {
                return(false);
            }

            host.StatSend?.Increment();

            // 编码请求
            var pk = EncodeArgs(host.Encoder, action, args);

            // 构造消息
            var msg = new DefaultMessage
            {
                OneWay  = true,
                Payload = pk,
            };

            if (flag > 0)
            {
                msg.Flag = flag;
            }

            return(session.Send(msg));
        }
示例#7
0
        /// <summary>编码请求</summary>
        /// <param name="action"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public IMessage Encode(String action, Object args)
        {
            var ms = new MemoryStream();

            ms.Seek(4, SeekOrigin.Begin);

            // 写入服务名
            var writer = new BinaryWriter(ms);

            writer.Write(action);

            // 写入参数
            if (args != null)
            {
                if (args is Packet pk)
                {
                    pk.WriteTo(ms);
                }
                else
                {
                    var bn = new Binary {
                        Stream = ms
                    };
                    bn.Write(args);
                }
            }

            // 构造消息
            var msg = new DefaultMessage
            {
                Payload = new Packet(ms.GetBuffer(), 4, (Int32)ms.Length - 4)
            };

            return(msg);
        }
示例#8
0
        public async Task PublisheAndConsumeDefault()
        {
            //Arrange
            var  subscriber         = GetService <IRabbitMQSubscriber>();
            bool publishWithSuccess = false;
            var  message            = new DefaultMessage
            {
                Campo = "PublisheAndConsumeDefault"
            };
            var options = RabbitMQExchangeOptions.Build <DefaultMessage>();

            //Act
            subscriber.StartConsume <DefaultMessage>((msg) =>
            {
                publishWithSuccess = msg.Campo == message.Campo;
                return(true);
            });
            await _publisher.PublishAsync(message);

            Thread.Sleep(2000);
            subscriber.Dispose();

            //Assert
            options.QueueName.ShouldNotBeNullOrWhiteSpace();

            var queueGenerated = await _rabbitExplorer.GetQueue(options.QueueName);

            queueGenerated.ShouldNotBeNull();
            queueGenerated.name.ShouldBe(options.QueueName);
            queueGenerated.durable.ShouldBe(options.Durable);
            publishWithSuccess.ShouldBeTrue();
        }
示例#9
0
        /// <summary>写入数据</summary>
        /// <param name="context"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public override Object Write(IHandlerContext context, Object message)
        {
            if (UserPacket && message is Packet pk)
                message = new DefaultMessage { Payload = pk, Sequence = (Byte)Interlocked.Increment(ref _gid) };
            else if (message is DefaultMessage msg && !msg.Reply && msg.Sequence == 0)
                msg.Sequence = (Byte)Interlocked.Increment(ref _gid);

            return base.Write(context, message);
        }
示例#10
0
        async Task DiscoverUdp(IPAddress local, IPEndPoint ep)
        {
            XTrace.WriteLine("DiscoverUdp: {0} -> {1}", local, ep);

            // 构建请求
            var enc = new JsonEncoder();
            var msg = enc.CreateRequest("Api/Info", null);
            var req = msg.ToPacket().ReadBytes();

            var udp = new UdpClient(ep.AddressFamily)
            {
                EnableBroadcast = true
            };

            if (local != null)
            {
                udp.Client.Bind(new IPEndPoint(local, Rand.Next(1000, 60000)));
            }

            // 发送
            udp.Send(req, req.Length, ep);

            // 多次接收
            while (true)
            {
                try
                {
                    var source = new CancellationTokenSource(3_000);
                    var rs     = await udp.ReceiveAsync(source.Token);

                    if (rs.Buffer != null)
                    {
                        msg = new DefaultMessage();
                        msg.Read(rs.Buffer);

                        if (enc.Decode(msg, out var action, out var code, out var data) && code == 0)
                        {
                            // 解码结果
                            var result = enc.DecodeResult(action, data, msg);
                            XTrace.WriteLine("Receive[{0}] {1}", udp.Client.LocalEndPoint, result.ToJson());

                            var ai = enc.Convert(result, typeof(ApiItem)) as ApiItem;
                            if (ai != null)
                            {
                                Invoke(() => ShowItem(ai));
                            }
                        }
                    }
                }
                catch (OperationCanceledException)
                {
                    break;
                }
            }
        }
示例#11
0
 /// <inheritdoc />
 TSource IConditionResultOption <TSource> .ThrowOrDefault <TException>(DefaultMessage defaultMessage, Type[] parameterTypes, object[] parameters)
 {
     try
     {
         return(((IConditionResultOption <TSource>) this).Throw <TException>(parameterTypes, parameters));
     }
     catch (CouldNotCreateInstanceException)
     {
         throw CreateDefault <TException>(defaultMessage);
     }
 }
        public IPacket Encode(ISession session, object obj)
        {
            var message = obj as DefaultMessage;

            if (message != null)
            {
                return(new DefaultPacket(DefaultMessage.ToBuffer(message, _messageBodyEncoder)));
            }

            return(null);
        }
示例#13
0
    private Model.DefaultMessage GetModel(int type, string number)
    {
        Model.DefaultMessage def = new DefaultMessage();
        def.OldId      = BLL.CommonClass.CommonDataBLL.getManageID(type);
        def.NewId      = number;
        def.OperateIp  = BLL.CommonClass.CommonDataBLL.OperateIP;
        def.OperateNum = Session["Company"].ToString();
        def.UpdateTime = DateTime.Now.ToUniversalTime();
        def.ExpectNum  = BLL.CommonClass.CommonDataBLL.getMaxqishu();
        def.Type       = type;

        return(def);
    }
示例#14
0
        /// <summary>加载消息</summary>
        /// <param name="pk"></param>
        /// <returns></returns>
        public override IMessage LoadMessage(Packet pk)
        {
            if (pk == null || pk.Count == 0)
            {
                return(null);
            }

            var msg = new DefaultMessage();

            msg.Read(pk);

            return(msg);
        }
示例#15
0
        static void Test2()
        {
            // 默认装饰
            MessageComponent defaultMessage = new DefaultMessage();

            // email装饰添加职责
            var emailDecorator = new EmailDecorator(defaultMessage);

            // SMS装饰添加职责
            var smsDecorator = new SMSDecorator(emailDecorator);//把emailDecorator添加到sms后,同时它集成了defaultMessage

            smsDecorator.Send("测试发送...");
        }
示例#16
0
        /// <summary>创建消息</summary>
        /// <param name="pk">数据包</param>
        /// <returns></returns>
        public override IMessage CreateMessage(Packet pk)
        {
            var msg = new DefaultMessage {
                Payload = pk
            };

            // 序列号避开0
            if (_seq == 0)
            {
                _seq++;
            }
            msg.Sequence = _seq++;

            return(msg);
        }
示例#17
0
        private TException CreateDefault <TException>(DefaultMessage defaultMessage)
            where TException : Exception, new()
        {
            var exception = new TException();

            if (defaultMessage is null)
            {
                return(exception);
            }

            var exceptionMessageField = typeof(TException).GetField("_message", BindingFlags.Instance | BindingFlags.NonPublic);

            exceptionMessageField?.SetValue(exception, defaultMessage.ToString());
            throw exception;
        }
示例#18
0
文件: IApiHost.cs 项目: yangyx91/X
        /// <summary>调用</summary>
        /// <param name="host"></param>
        /// <param name="session"></param>
        /// <param name="action">服务操作</param>
        /// <param name="args">参数</param>
        /// <param name="flag">标识</param>
        /// <returns></returns>
        public static Boolean Invoke(IApiHost host, Object session, String action, Object args, Byte flag = 0)
        {
            if (session == null)
            {
                return(false);
            }

            // 性能计数器,次数、TPS、平均耗时
            //host.StatSend?.Increment();
            var st = host.StatInvoke;

            // 编码请求
            var pk = EncodeArgs(host.Encoder, action, args);

            // 构造消息
            var msg = new DefaultMessage
            {
                OneWay  = true,
                Payload = pk,
            };

            if (flag > 0)
            {
                msg.Flag = flag;
            }

            var sw = st.StartCount();

            try
            {
                if (session is IApiSession ss)
                {
                    return(ss.Send(msg));
                }
                else if (session is ISocketRemote client)
                {
                    return(client.SendMessage(msg));
                }
                else
                {
                    throw new InvalidOperationException();
                }
            }
            finally
            {
                st.StopCount(sw);
            }
        }
        /// <summary>
        /// Get Exam List from Server.
        /// </summary>
        /// <returns></returns>
        private bool GetExamList()
        {
            var v = new DefaultMessage(Command.SendExamList);

            //wait three connection attempts
            for (int i = 0; i < 3; i++)
            {
                if (_client.SendPacket(v))
                {
                    return(true);
                }
                i++;
                Thread.Sleep(200);
            }
            return(false);
        }
示例#20
0
        /// <summary>解码</summary>
        /// <param name="context"></param>
        /// <param name="pk"></param>
        /// <returns></returns>
        protected override IList<IMessage> Decode(IHandlerContext context, Packet pk)
        {
            var ss = context.Session;
            var mcp = ss["CodecItem"] as CodecItem;
            if (mcp == null) ss["CodecItem"] = mcp = new CodecItem();

            var pks = Parse(pk, mcp, DefaultMessage.GetLength);
            var list = pks.Select(e =>
            {
                var msg = new DefaultMessage();
                if (!msg.Read(e)) return null;

                return msg as IMessage;
            }).ToList();

            return list;
        }
        /// <summary>
        /// Start Exame
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStartTest_Click(object sender, EventArgs e)
        {
            if (_testStarted)
            {
                String UserName       = txtUsername.Text;
                String ExameStartedAt = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss");
                String SelectedExame  = comboExamSelection.Text;

                DefaultMessage m = new DefaultMessage(Command.SendExercises);
                m.MessageString = SelectedExame;
                _client.SendPacket(m);

                m = new DefaultMessage(Command.SetUserName);
                m.MessageString = UserName;
                _client.SendPacket(m);
            }
        }
示例#22
0
        public void BinaryEncode()
        {
            var msg = new DefaultMessage
            {
                Sequence = 1,
                Payload  = "Open".GetBytes(),
            };
            var pk = msg.ToPacket();

            Assert.Equal(1, pk[0]);
            Assert.Equal(1, pk[1]);
            Assert.Equal(4, pk[2]);
            Assert.Equal(0, pk[3]);
            Assert.Equal("Open", pk.Slice(4).ToStr());

            var msgd = new DefaultMessage();
            var rs   = msgd.Read(pk);

            Assert.True(rs);
            Assert.Equal(msg.Flag, msgd.Flag);
            Assert.Equal(msg.Sequence, msgd.Sequence);
            Assert.Equal(msg.Payload.ToStr(), msgd.Payload.ToStr());

            var msg2 = new DefaultMessage
            {
                Reply    = true,
                Sequence = 1,
                Payload  = "执行成功".GetBytes(),
            };
            var pk2 = msg2.ToPacket();

            Assert.Equal(0x81, pk2[0]);
            Assert.Equal(1, pk2[1]);
            Assert.Equal(12, pk2[2]);
            Assert.Equal(0, pk2[3]);
            Assert.Equal("执行成功", pk2.Slice(4).ToStr());

            var msgd2 = new DefaultMessage();
            var rs2   = msgd2.Read(pk2);

            Assert.True(rs2);
            Assert.Equal(msg2.Flag, msgd2.Flag);
            Assert.Equal(msg2.Sequence, msgd2.Sequence);
            Assert.Equal(msg2.Payload.ToStr(), msgd2.Payload.ToStr());
        }
示例#23
0
        public static async Task PrepareAsync(this IEventPublisher eventPublisher, string routeKey, object content, object metaData, IDbConnection dbConnection, IDbTransaction dbTransaction, string exchange = "default.exchange@feiniubus", object args = null)
        {
            var message = new DefaultMessage(content);

            var anonyObj     = new AnonymousObject(metaData);
            var anonyMembers = anonyObj.GetProperties().Where(member => member.MemberType == System.Reflection.MemberTypes.Property)
                               .Select(member => new { MemberName = member.MemberName, Value = anonyObj.GetValue(member.DeclaringType, member.MemberName) });

            if (anonyMembers.Any())
            {
                var md = new MetaData();
                foreach (var member in anonyMembers)
                {
                    md.Set(member.MemberName, member.Value.ToString());
                }
                message.MetaData.Contact(md);
            }

            await eventPublisher.PrepareAsync(new EventDescriptor(routeKey, message, exchange, args), dbConnection, dbTransaction);
        }
示例#24
0
        public void StringEncodeNoFlag()
        {
            var msg = new DefaultMessage
            {
                Sequence = 1,
                Payload  = "Open".GetBytes(),
            };
            var str = msg.Encode(null, false);

            Assert.Equal("4,1:Open", str);

            var msg2 = new DefaultMessage
            {
                Reply    = true,
                Sequence = 1,
                Payload  = "执行成功".GetBytes(),
            };
            var str2 = msg2.Encode(null, false);

            Assert.Equal("12,1:执行成功", str2);
        }
示例#25
0
        //
        // GET: /Home/
        public ActionResult Home()
        {
            DefaultMessage response = new DefaultMessage();
            try
            {
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "AllLocalCopy\\combine.bat";
                proc.StartInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory + "AllLocalCopy";
                proc.StartInfo.RedirectStandardError = true;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.UseShellExecute = false;

                proc.Start();

                response.Success = true;
            }
            catch (Exception exception)
            {
                //Log.Error(exception.Message, exception);
            }
            return View(response);
        }
示例#26
0
        /// <summary>创建请求</summary>
        /// <param name="action"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public virtual IMessage CreateRequest(String action, Object args)
        {
            // 二进制优先
            if (args is Packet pk)
            {
            }
            else if (args is Byte[] buf)
            {
                pk = new Packet(buf);
            }
            else
            {
                pk = Encode(action, 0, args);
            }
            pk = Encode(action, 0, pk);

            var msg = new DefaultMessage {
                Payload = pk,
            };

            return(msg);
        }
示例#27
0
        /// <summary>解码</summary>
        /// <param name="context"></param>
        /// <param name="pk"></param>
        /// <returns></returns>
        protected override IList <IMessage> Decode(IHandlerContext context, Packet pk)
        {
            var ss  = context.Owner as IExtend;
            var mcp = ss["CodecItem"] as CodecItem;

            if (mcp == null)
            {
                ss["CodecItem"] = mcp = new CodecItem();
            }

            var pks  = Parse(pk, mcp, DefaultMessage.GetLength);
            var list = pks.Select(e =>
            {
                var msg = new DefaultMessage();
                if (!msg.Read(e))
                {
                    return(null);
                }

                return(msg as IMessage);
            }).ToList();

            return(list);
        }
示例#28
0
文件: IApiHost.cs 项目: yangyx91/X
        /// <summary>调用</summary>
        /// <param name="host"></param>
        /// <param name="session"></param>
        /// <param name="resultType">结果类型</param>
        /// <param name="action">服务操作</param>
        /// <param name="args">参数</param>
        /// <param name="flag">标识</param>
        /// <returns></returns>
        public static async Task <Object> InvokeAsync(IApiHost host, Object session, Type resultType, String action, Object args, Byte flag)
        {
            if (session == null)
            {
                return(null);
            }

            // 性能计数器,次数、TPS、平均耗时
            //host.StatSend?.Increment();
            var st = host.StatInvoke;
            var sw = st.StartCount();

            // 编码请求
            var enc = host.Encoder;
            var pk  = EncodeArgs(enc, action, args);

            // 构造消息
            var msg = new DefaultMessage {
                Payload = pk,
            };

            if (flag > 0)
            {
                msg.Flag = flag;
            }

            IMessage rs = null;

            try
            {
                if (session is IApiSession ss)
                {
                    rs = await ss.SendAsync(msg);
                }
                else if (session is ISocketRemote client)
                {
                    rs = (await client.SendMessageAsync(msg)) as IMessage;
                }
                else
                {
                    throw new InvalidOperationException();
                }
                //rs = await session.SendAsync(msg);
                if (rs == null)
                {
                    return(null);
                }
            }
            catch (AggregateException aggex)
            {
                var ex = aggex.GetTrue();
                if (ex is TaskCanceledException)
                {
                    throw new TimeoutException($"请求[{action}]超时!", ex);
                }
                throw aggex;
            }
            catch (TaskCanceledException ex)
            {
                throw new TimeoutException($"请求[{action}]超时!", ex);
            }
            finally
            {
                st.StopCount(sw);
            }

            // 特殊返回类型
            if (resultType == typeof(IMessage))
            {
                return(rs);
            }
            //if (resultType == typeof(Packet)) return rs.Payload;

            if (!Decode(rs, out var act, out var code, out var data))
            {
                throw new InvalidOperationException();
            }

            // 是否成功
            if (code != 0)
            {
                throw new ApiException(code, data.ToStr());
            }

            if (data == null)
            {
                return(null);
            }
            if (resultType == typeof(Packet))
            {
                return(data);
            }

            // 解码结果
            var result = enc.Decode(action, data);

            if (resultType == typeof(Object))
            {
                return(result);
            }

            // 返回
            return(enc.Convert(result, resultType));
        }
示例#29
0
文件: IApiHost.cs 项目: wuseyangg/X
        /// <summary>调用</summary>
        /// <param name="host"></param>
        /// <param name="session"></param>
        /// <param name="resultType">结果类型</param>
        /// <param name="action">服务操作</param>
        /// <param name="args">参数</param>
        /// <param name="flag">标识</param>
        /// <returns></returns>
        public static async Task <Object> InvokeAsync(IApiHost host, IApiSession session, Type resultType, String action, Object args, Byte flag)
        {
            if (session == null)
            {
                return(null);
            }

            host.StatSend?.Increment();

            // 编码请求
            var enc = host.Encoder;
            var pk  = EncodeArgs(enc, action, args);

            // 构造消息
            var msg = new DefaultMessage {
                Payload = pk,
            };

            if (flag > 0)
            {
                msg.Flag = flag;
            }

            var rs = await session.SendAsync(msg);

            if (rs == null)
            {
                return(null);
            }

            // 特殊返回类型
            if (resultType == typeof(IMessage))
            {
                return(rs);
            }
            //if (resultType == typeof(Packet)) return rs.Payload;

            if (!Decode(rs, out var act, out var code, out var data))
            {
                throw new InvalidOperationException();
            }

            // 是否成功
            if (code != 0)
            {
                throw new ApiException(code, data.ToStr());
            }

            if (data == null)
            {
                return(null);
            }
            if (resultType == typeof(Packet))
            {
                return(data);
            }

            // 解码结果
            var result = enc.Decode(action, data);

            if (resultType == typeof(Object))
            {
                return(result);
            }

            // 返回
            return(enc.Convert(result, resultType));
        }
示例#30
0
        private static DefaultMessage GenerateDiscordMessage(IDictionary <string, string> queryParameters, dynamic data)
        {
            DefaultMessage discordMessage = null;

            string eventType = data.eventType;

            switch (eventType)
            {
            case "build.complete":
                discordMessage = new BuildCompleteMessage(queryParameters, data);
                break;

            case "git.push":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "git.pullrequest.created":
                discordMessage = new PullRequestCreatedMessage(queryParameters, data);
                break;

            case "git.pullrequest.updated":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "git.pullrequest.merged":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "tfvc.checkin":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "workitem.created":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "workitem.commented":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "workitem.updated":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "workitem.deleted":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "workitem.restored":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "ms.vss-release.release-created-event":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "ms.vss-release.release-abandoned-event":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "ms.vss-release.deployment-approval-completed-event":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "ms.vss-release.deployment-approval-pending-event":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "ms.vss-release.deployment-started-event":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            case "ms.vss-release.deployment-completed-event":
                discordMessage = new DefaultMessage(queryParameters, data);
                break;

            default:
                discordMessage = new DefaultMessage(queryParameters, data);
                break;
            }

            return(discordMessage);
        }
 public object Decode(ISession session, IPacket packet)
 {
     return(DefaultMessage.FromBuffer(packet.Buffer, _messageBodyDecoder));
 }