private void FlushCallBack(StatRange range, Dictionary <string, object> match) { MongoRange r = new MongoRange { Counter = range.Counter, Left = range.Left, MatchElements = match, SecondsInterval = range.secondsInterval }; try { PersistenceChunks.Save(r); } catch (Exception e) { logger.Exception(e, "FlushCallBack", "can't save statistic chunk"); } }
public void Save(MongoRange range) { // insert/update //var query = Query.And(GetQuery(range.MatchElements), Query<MongoRange>.EQ(p => p.Left, range.Left)); var query = GetQuery(range.MatchElements, new List <IMongoQuery> { Query <MongoRange> .EQ(p => p.Left, range.Left), Query <MongoRange> .EQ(p => p.SecondsInterval, range.SecondsInterval) }); CheckConnection(); Collection.Update(query, Update <MongoRange> .Set(p => p.Left, range.Left) .Set(p => p.Counter, range.Counter).Set(p => p.SecondsInterval, range.SecondsInterval) //.Set(p => p.MatchElements, range.MatchElements) , UpdateFlags.Upsert, WriteConcern.Acknowledged); }
public void CreateRanges(int[] secRanges, MongoRange[] pranges, FlushCB f = null) { currentRanges = new StatRange[secRanges.Length]; lastRanges = new StatRange[secRanges.Length]; for (int i = 0; i < secRanges.Length; i++) { StatRange sr = new StatRange(secRanges[i]); for (int j = 0; j < pranges.Length; j++) { if (pranges[j].SecondsInterval == secRanges[i]) { sr.Restore(pranges[j]); break; } } lastRanges[i] = currentRanges[i] = sr; } flushCallback = f; }
public void Save(MongoRange range) { // insert/update //var query = Query.And(GetQuery(range.MatchElements), Query<MongoRange>.EQ(p => p.Left, range.Left)); var query = GetQuery(range.MatchElements, new List<IMongoQuery>{ Query<MongoRange>.EQ(p => p.Left, range.Left), Query<MongoRange>.EQ(p => p.SecondsInterval, range.SecondsInterval) }); CheckConnection(); Collection.Update(query, Update<MongoRange>.Set(p => p.Left, range.Left) .Set(p => p.Counter, range.Counter).Set(p => p.SecondsInterval, range.SecondsInterval) //.Set(p => p.MatchElements, range.MatchElements) , UpdateFlags.Upsert, WriteConcern.Acknowledged); }