Пример #1
0
        public void OnMsg(LogicalAdvertiseMsg msg)
        {
            PhysicalRoute physRoute;

            MsgEP[] logicalEPs;

            using (TimedLock.Lock(this.SyncRoot))
            {
                if (!base.EnableP2P)
                {
                    return;     // Don't maintain physical routes if the
                }
                // leaf router is not enabled for P2P.

                physRoute = this.PhysicalRoutes[msg.RouterEP];
                if (physRoute == null)
                {
                    // No physical route exists yet so add one

                    AddPhysicalRoute(msg.RouterEP, msg.AppName, msg.AppDescription, msg.RouterInfo, msg.LogicalEndpointSetID,
                                     new IPEndPoint(msg.IPAddress, msg.UdpPort), new IPEndPoint(msg.IPAddress, msg.TcpPort));
                    physRoute = this.PhysicalRoutes[msg.RouterEP];
                }

                logicalEPs = msg.LogicalEPs;
                for (int i = 0; i < logicalEPs.Length; i++)
                {
                    base.LogicalRoutes.Add(new LogicalRoute(logicalEPs[i], physRoute));
                }
            }
        }
Пример #2
0
        public void Msg_Serialize_LogicalAdvertiseMsg()
        {
            LogicalAdvertiseMsg msgIn, msgOut;
            EnhancedStream      es = new EnhancedMemoryStream();

            Msg.ClearTypes();
            Msg.LoadTypes(Assembly.GetExecutingAssembly());

            msgOut = new LogicalAdvertiseMsg(new MsgEP[] { "logical://ep1", "logical://ep2" }, MsgEP.Parse("physical://root.com:80/hub/leaf"),
                                             "appname", "appdescription", new MsgRouterInfo(new Version(1000, 0)), 10, 20, Helper.NewGuid());
            msgOut._FromEP = MsgEP.Parse("physical://root.com:80/hub/leaf?c=mcast://1.2.3.4:57");

            Msg.Save(es, msgOut);
            es.Seek(0, SeekOrigin.Begin);
            msgIn = (LogicalAdvertiseMsg)Msg.Load(es);

            CollectionAssert.AreEqual(msgOut.LogicalEPs, msgIn.LogicalEPs);
            Assert.AreEqual("physical://root.com:80/hub/leaf", msgIn.RouterEP.ToString());
            Assert.AreEqual("appname", msgIn.AppName);
            Assert.AreEqual("appdescription", msgIn.AppDescription);
            Assert.AreEqual(new Version(1000, 0), msgIn.RouterInfo.ProtocolVersion);
            Assert.AreEqual(10, msgIn.UdpPort);
            Assert.AreEqual(20, msgIn.TcpPort);
            Assert.AreEqual(msgOut.LogicalEndpointSetID, msgIn.LogicalEndpointSetID);
            Assert.IsTrue(msgIn.RouterInfo.IsP2P);

            msgOut = (LogicalAdvertiseMsg)msgIn.Clone();

            CollectionAssert.AreEqual(msgOut.LogicalEPs, msgIn.LogicalEPs);
            Assert.AreEqual("physical://root.com:80/hub/leaf", msgIn.RouterEP.ToString());
            Assert.AreEqual("appname", msgIn.AppName);
            Assert.AreEqual("appdescription", msgIn.AppDescription);
            Assert.AreEqual(new Version(1000, 0), msgIn.RouterInfo.ProtocolVersion);
            Assert.AreEqual(10, msgIn.UdpPort);
            Assert.AreEqual(20, msgIn.TcpPort);
            Assert.AreEqual(msgOut.LogicalEndpointSetID, msgIn.LogicalEndpointSetID);
            Assert.IsTrue(msgIn.RouterInfo.IsP2P);
        }