void ITimerService.Run() { RawRecord() .Right(record => { this.LastRecord = record; }) .Left(err => System.Console.WriteLine(err.Message)); this.Timer = new System.Threading.Timer(e => { RawRecord().Right(record => { var diff = DiffToLast(record); this.LastRecord = record; this.db.Try(db => { db.GetCollection <MongoPerformanceRecord>("mongoPerformance").InsertOne(diff); return(true); }); this.socketServicec.Broadcast(diff, "_mongoPerformance"); }).Left(err => System.Console.WriteLine(err)); MonitorApps(); }, null, TimeSpan.FromSeconds(60), TimeSpan.FromSeconds(60)); }
MongoPerformanceRecord DiffToLast(MongoPerformanceRecord record) { return(new MongoPerformanceRecord { Inserted = record.Inserted - LastRecord.Inserted, Updated = record.Updated - LastRecord.Updated, Deleted = record.Deleted - LastRecord.Deleted, Returned = record.Returned - LastRecord.Returned, MemUsage = record.MemUsage }); }