コード例 #1
0
        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");
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: Model.cs プロジェクト: alejandraa/TaskMQ
        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;
        }
コード例 #4
0
        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);
        }