Beispiel #1
0
        public void OnExternalMsg(GeoFixMsg msg)
        {
            try
            {
                clusterClient.BeginQuery(msg.EntityID, msg.Clone(),
                                         ar =>
                {
                    clusterClient.EndQuery(ar);
                    router.ReplyTo(msg, new Ack());

                    msg._Session.OnAsyncFinished();
                },
                                         null);
            }
            catch (Exception e)
            {
                SysLog.LogException(e);
                throw;
            }
        }
Beispiel #2
0
        public void OnInternalMsg(GeoFixMsg msg)
        {
            try
            {
                if (archiver != null)
                {
                    // Archive the fixes.

                    foreach (var fix in msg.Fixes)
                    {
                        archiver.Archive(msg.EntityID, msg.GroupID, fix);
                    }
                }

                perf.FixesReceived.IncrementBy(msg.Fixes.Length);
                fixCache.AddEntityFixes(msg.EntityID, msg.GroupID, msg.Fixes);
                router.ReplyTo(msg, new Ack());
            }
            catch (Exception e)
            {
                SysLog.LogException(e);
                throw;
            }
        }
Beispiel #3
0
        public void GeoTrackerMsgs_GeoFixMsg()
        {
            EnhancedStream es = new EnhancedMemoryStream();
            GeoFixMsg      msgIn, msgOut;
            DateTime       nowUtc = DateTime.UtcNow;

            Msg.ClearTypes();
            LillTek.GeoTracker.Global.RegisterMsgTypes();

            msgOut = new GeoFixMsg("Jeff", "Developer", new GeoFix()
            {
                TimeUtc = nowUtc, Latitude = 10, Longitude = 20
            });

            Msg.Save(es, msgOut);
            es.Position = 0;
            msgIn       = (GeoFixMsg)Msg.Load(es);

            Assert.IsNotNull(msgIn);
            Assert.AreEqual("Jeff", msgIn.EntityID);
            Assert.AreEqual("Developer", msgIn.GroupID);
            Assert.AreEqual(nowUtc, msgIn.Fixes[0].TimeUtc);
            Assert.AreEqual(10, msgIn.Fixes[0].Latitude);
            Assert.AreEqual(20, msgIn.Fixes[0].Longitude);

            // Try with a GroupID=null

            msgOut = new GeoFixMsg("Joe", null, new GeoFix()
            {
                TimeUtc = nowUtc, Latitude = 30, Longitude = 40
            });

            es.Position = 0;
            Msg.Save(es, msgOut);
            es.Position = 0;
            msgIn       = (GeoFixMsg)Msg.Load(es);

            Assert.IsNotNull(msgIn);
            Assert.AreEqual("Joe", msgIn.EntityID);
            Assert.IsNull(msgIn.GroupID);
            Assert.AreEqual(nowUtc, msgIn.Fixes[0].TimeUtc);
            Assert.AreEqual(30, msgIn.Fixes[0].Latitude);
            Assert.AreEqual(40, msgIn.Fixes[0].Longitude);

            // Test multiple fixes

            var fixes = new List <GeoFix>();

            fixes.Add(new GeoFix()
            {
                TimeUtc = nowUtc, Latitude = 30, Longitude = 40
            });
            fixes.Add(new GeoFix()
            {
                TimeUtc = nowUtc, Latitude = 50, Longitude = 60
            });

            msgOut = new GeoFixMsg("Joe", "group", fixes);

            es.Position = 0;
            Msg.Save(es, msgOut);
            es.Position = 0;
            msgIn       = (GeoFixMsg)Msg.Load(es);

            Assert.IsNotNull(msgIn);
            Assert.AreEqual("Joe", msgIn.EntityID);
            Assert.AreEqual("group", msgIn.GroupID);
            Assert.AreEqual(2, fixes.Count);
            Assert.AreEqual(nowUtc, msgIn.Fixes[0].TimeUtc);
            Assert.AreEqual(30, msgIn.Fixes[0].Latitude);
            Assert.AreEqual(40, msgIn.Fixes[0].Longitude);
            Assert.AreEqual(nowUtc, msgIn.Fixes[1].TimeUtc);
            Assert.AreEqual(50, msgIn.Fixes[1].Latitude);
            Assert.AreEqual(60, msgIn.Fixes[1].Longitude);

            // Test Clone()

            msgIn = (GeoFixMsg)msgOut.Clone();

            Assert.IsNotNull(msgIn);
            Assert.AreEqual("Joe", msgIn.EntityID);
            Assert.AreEqual("group", msgIn.GroupID);
            Assert.AreEqual(2, fixes.Count);
            Assert.AreEqual(nowUtc, msgIn.Fixes[0].TimeUtc);
            Assert.AreEqual(30, msgIn.Fixes[0].Latitude);
            Assert.AreEqual(40, msgIn.Fixes[0].Longitude);
            Assert.AreEqual(nowUtc, msgIn.Fixes[1].TimeUtc);
            Assert.AreEqual(50, msgIn.Fixes[1].Latitude);
            Assert.AreEqual(60, msgIn.Fixes[1].Longitude);
        }