public List <SystemTracks> getFullTrackMessagesByTime(TimeType startTime, TimeType endTime) { List <SystemTracks> TrackMessages = new List <SystemTracks>(); IMongoCollection <BsonDocument> collection = _db.GetCollection <BsonDocument>("SystemTrack"); var filter1 = Builders <BsonDocument> .Filter.Gt("timeStamp.seconds", startTime.seconds); var filter2 = Builders <BsonDocument> .Filter.Lt("timeStamp.seconds", endTime.seconds); var mainFilter = Builders <BsonDocument> .Filter.And(filter1, filter2); var result = collection.Find(mainFilter).ToList(); foreach (var trackRecord in result) { var tmp = new JsonWriterSettings { OutputMode = JsonOutputMode.Strict }; JObject json = JObject.Parse(trackRecord.ToJson <MongoDB.Bson.BsonDocument>(tmp)); SystemTracks trackMessage = Newtonsoft.Json.JsonConvert.DeserializeObject <SystemTracks>(json.ToString()); TrackMessages.Add(trackMessage); } return(TrackMessages); }
public void SendTrackData(SystemTracks message) { string json = JsonConvert.SerializeObject(message); var body = Encoding.UTF8.GetBytes(json); Channel.BasicPublish(exchange: "LucidTrackData", routingKey: "", basicProperties: null, body: body); }
public List <SystemTracks> getTracksByID(long trackID) { IMongoCollection <BsonDocument> collection = _db.GetCollection <BsonDocument>("SystemTrack"); var filter = Builders <BsonDocument> .Filter.Eq("systemTracks.trackID", trackID); var result = collection.Find(filter).ToList(); var listOfTMAMessage = new List <SystemTracks>(); foreach (var mes in result) { var x = new JsonWriterSettings { OutputMode = JsonOutputMode.Strict }; JObject json = JObject.Parse(mes.ToJson <MongoDB.Bson.BsonDocument>(x)); SystemTracks tmaMessage = Newtonsoft.Json.JsonConvert.DeserializeObject <SystemTracks>(json.ToString()); SystemTracks UpdatedMessge = new SystemTracks(); UpdatedMessge.timeStamp = tmaMessage.timeStamp; bool isTrakIDFounded = false; for (int i = 0; i < tmaMessage.systemTracks.Count; i++) { if (tmaMessage.systemTracks[i].trackID == trackID) { isTrakIDFounded = true; TrackData neededTrack = new TrackData() { creationTime = tmaMessage.systemTracks[i].creationTime, relativeBearing = tmaMessage.systemTracks[i].relativeBearing, relativeBearingRate = tmaMessage.systemTracks[i].relativeBearingRate, trackID = tmaMessage.systemTracks[i].trackID, trackState = tmaMessage.systemTracks[i].trackState }; UpdatedMessge.systemTracks = new List <TrackData>(); UpdatedMessge.systemTracks.Add(neededTrack); } } if (isTrakIDFounded) { listOfTMAMessage.Add(UpdatedMessge); } } return(listOfTMAMessage); }
public void UpdateTargetsData(byte[] targets, IInterpreter <SystemTracks> targetsInterpreter) { m_targets = targetsInterpreter.ByteArrayToStruct(targets); }
// Handle a TMA message public void HandleTMAMessage(TMAOriginalMessage message) { SystemTracks sysTracks = new SystemTracks(); sysTracks.timeStamp = convertTime(message.timeStamp); sysTracks.systemTracks = new List <TrackData>(); foreach (OriginalSystemTrack OrigTrack in message.systemTracks) { // if track exists if (OrigTrack.trackId != 0) { TrackData newTrackData = new TrackData(); newTrackData.trackID = OrigTrack.trackId; newTrackData.relativeBearing = OrigTrack.bearing; if (OrigTrack.bearingRate.valid) { newTrackData.relativeBearingRate = OrigTrack.bearingRate.value; } // if new track if (!isKnownTarget[OrigTrack.trackId - 1]) { isKnownTarget[OrigTrack.trackId - 1] = true; creationTime[OrigTrack.trackId - 1] = OrigTrack.timeStamp; newTrackData.trackState = State.NewTrack; newTrackData.creationTime = convertTime(OrigTrack.timeStamp); } // if old track else { newTrackData.trackState = State.UpdateTrack; newTrackData.creationTime = convertTime(creationTime[OrigTrack.trackId - 1]); } sysTracks.systemTracks.Add(newTrackData); } } if (lastTracksMessage != null) { foreach (var currTrack in lastTracksMessage.systemTracks) { if (currTrack.trackId != 0) { // check if track was deleted if (!sysTracks.systemTracks.Exists(x => x.trackID == currTrack.trackId)) { isKnownTarget[currTrack.trackId - 1] = false; TrackData newTrack = new TrackData() { trackID = currTrack.trackId, trackState = State.DeleteTrack }; sysTracks.systemTracks.Add(newTrack); } } } } lastTracksMessage = message; // send to stiching sender.SendTrackData(sysTracks); // save to db db.saveRecord(sysTracks, "SystemTrack"); }