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; } }
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; } }
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); }