//Serializes and sends a given event. //We can change Format and File/Server sending type. void ProcessEvent(TrackerEvent evnt) { persistenceObject.SetType(new FilePersistence()); serializaionObjct.SetType(new CSVSerializer()); persistenceObject.Send(serializaionObjct.Serialize(evnt)); serializaionObjct.SetType(new JSONSerializer()); persistenceObject.Send(serializaionObjct.Serialize(evnt)); }
//Tracker Loop private void Runnable() { DateTime dt = DateTime.Now; DateTime dtnow; TimeSpan result; int seconds = 0; while (alive) { dtnow = DateTime.Now; result = dtnow.Subtract(dt); seconds = Convert.ToInt32(result.TotalSeconds); //Checks if there is events yet to be serialized every ((tick)) seconds if (seconds > tick) { flag = !flag; seconds = 0; dt = DateTime.Now; } while (flag && assetTrackerObject.Any()) { Console.WriteLine("New trace generated"); TrackerEvent obj = assetTrackerObject.Dequeue(); ProcessEvent(obj); } flag = false; } //Checks if there are any events left to be serialized. while (assetTrackerObject.Any()) { Console.WriteLine("New trace generated"); TrackerEvent obj = assetTrackerObject.Dequeue(); ProcessEvent(obj); } }
//Adds an event to queue public void PushEvent(TrackerEvent evnt) { assetTrackerObject.Enqueue(evnt); }
public string Serialize(TrackerEvent evnt) { return(_type.Serialize(evnt)); }