public void OnMsg(PropertyMsg queryMsg) { PropertyMsg replyMsg; switch (queryMsg._Get("cmd")) { case "reply": replyMsg = new PropertyMsg(); replyMsg["value"] = queryMsg["value"]; router.ReplyTo(queryMsg, replyMsg); break; case "delay-reply": Thread.Sleep(500); replyMsg = new PropertyMsg(); replyMsg["value"] = queryMsg["value"]; router.ReplyTo(queryMsg, replyMsg); break; case "error": throw new Exception("Error: " + queryMsg["value"]); } }
public void PropertyMsg_Access() { PropertyMsg msg = new PropertyMsg(); msg._Set("string", "hello"); msg._Set("bool", true); msg._Set("int", 10); msg._Set("timespan", new TimeSpan(0, 0, 0, 0, 55)); msg._Set("endpoint", new IPEndPoint(IPAddress.Parse("127.0.0.1"), 56)); msg._Set("bytes", new byte[] { 5, 6, 7, 0x1F }); msg._Set("address", IPAddress.Parse("1.2.3.4")); Assert.AreEqual("hello", msg._Get("string")); Assert.AreEqual("hello", msg["string"]); Assert.AreEqual("hello", msg["STRING"]); Assert.IsNull(msg["foobar"]); Assert.AreEqual("foobar", msg._Get("foobar", "foobar")); Assert.AreEqual(IPAddress.Parse("1.2.3.4"), msg._Get("address", IPAddress.Any)); msg["test"] = "test"; Assert.AreEqual("test", msg["test"]); msg["test"] = "test #2"; Assert.AreEqual("test #2", msg["test"]); Assert.IsTrue(msg._Get("bool", false)); Assert.IsFalse(msg._Get("foobar", false)); Assert.AreEqual("1", msg["bool"]); msg._Set("bool", false); Assert.IsFalse(msg._Get("bool", true)); Assert.AreEqual("0", msg["bool"]); Assert.IsTrue(msg._Get("test", true)); Assert.AreEqual(10, msg._Get("int", 0)); Assert.AreEqual(20, msg._Get("foobar", 20)); msg._Set("int", -566); Assert.AreEqual(-566, msg._Get("int", 0)); Assert.AreEqual("-566", msg["int"]); Assert.AreEqual(666, msg._Get("test", 666)); Assert.AreEqual(new TimeSpan(0, 0, 0, 0, 55), msg._Get("timespan", TimeSpan.FromSeconds(60))); Assert.AreEqual(new TimeSpan(0, 0, 0, 60), msg._Get("foobar", TimeSpan.FromSeconds(60))); msg._Set("timespan", TimeSpan.FromSeconds(77)); Assert.AreEqual(TimeSpan.FromSeconds(77), LillTek.Common.Serialize.Parse(msg["timespan"], TimeSpan.Zero)); Assert.AreEqual(TimeSpan.FromSeconds(1), msg._Get("test", TimeSpan.FromSeconds(1))); msg._Set("bad-ip", "10."); Assert.AreEqual(IPAddress.Parse("10.20.30.40"), msg._Get("bad_ip", IPAddress.Parse("10.20.30.40"))); Assert.AreEqual(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 56), msg._Get("endpoint", (IPEndPoint)null)); Assert.AreEqual("127.0.0.1:56", msg["endpoint"]); Assert.AreEqual(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 57), msg._Get("foobar", new IPEndPoint(IPAddress.Parse("127.0.0.1"), 57))); msg._Set("endpoint", new IPEndPoint(IPAddress.Parse("127.0.0.1"), 58)); Assert.AreEqual(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 58), msg._Get("endpoint", (IPEndPoint)null)); Assert.AreEqual(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 58), msg._Get("test", new IPEndPoint(IPAddress.Parse("127.0.0.1"), 58))); CollectionAssert.AreEqual(new byte[] { 5, 6, 7, 0x1F }, msg._Get("bytes", (byte[])null)); CollectionAssert.AreEqual(new byte[] { 10, 11 }, msg._Get("foobar", new byte[] { 10, 11 })); Assert.AreEqual("0506071f", msg["bytes"]); msg._Set("bytes", new byte[] { 0x0a, 0x1b, 0x2c, 0x3d, 0x4e, 0x5f }); CollectionAssert.AreEqual(new byte[] { 0x0a, 0x1b, 0x2c, 0x3d, 0x4e, 0x5f }, msg._Get("bytes", (byte[])null)); CollectionAssert.AreEqual(new byte[] { 10 }, msg._Get("test", new byte[] { 10 })); var id = Helper.NewGuid(); msg._Set("id", id); Assert.AreEqual(id, msg._Get("id", Guid.Empty)); Assert.AreEqual(Guid.Empty, msg._Get("_id", Guid.Empty)); msg._Set("_id", "sss s s s"); Assert.AreEqual(Guid.Empty, msg._Get("_id", Guid.Empty)); var now = Helper.UtcNowRounded; msg._Set("date", now); Assert.AreEqual(now, msg._Get("date", DateTime.MaxValue)); }