예제 #1
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/xml";

            string metric     = context.Request.Form["m"];
            string ticks      = context.Request.Form["t"];
            string identifier = context.Request.Form["i"];
            string score      = context.Request.Form["s"];

            string clientIp = "";
            int    iTicks   = 0;
            int    iScore   = 0;

            try
            {
                identifier = identifier ?? "";
                iTicks     = Convert.ToInt32(ticks);
                iScore     = Convert.ToInt32(score);
                clientIp   = (context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? context.Request.ServerVariables["REMOTE_ADDR"]).Split(',')[0].Trim();
                clientIp   = (clientIp.Length < 4) ? "" : clientIp;
            }
            catch
            {
            }


            Metric Metric = new Metric();

            Metric.Name       = metric;
            Metric.Identifier = identifier;
            Metric.Time       = iTicks;
            Metric.Date       = Convert.ToInt32(DateTime.Now.ToString("yyyyMMdd"));
            Metric.Hours      = Convert.ToInt32(DateTime.Now.ToString("HHmmss"));
            Metric.Host       = context.Request.Url.Host;
            Metric.IP         = clientIp;
            Metric.Score      = iScore;

            Metric2 Metric2 = new Metric2
            {
                Name       = Metric.Name,
                Identifier = Metric.Identifier,
                Count      = 1,
                Total      = Metric.Time
            };

            MongoLib.MongoUtil M = new MongoLib.MongoUtil();
            if (M.Exists(metric, identifier))
            {
                M.Update(Metric2);
            }
            else
            {
                M.Add(Metric2);
            }

            M.Add(Metric);

            context.Response.Write("<ok />");
        }
예제 #2
0
        public bool Update(Metric2 Metric)
        {
            var query  = Query.And(Query.EQ("Name", Metric.Name), Query.EQ("Identifier", Metric.Identifier));
            var update = MongoDB.Driver.Builders.Update.Inc("Count", 1).Inc("Total", Metric.Total);
            var sortBy = SortBy.Descending("Name");
            FindAndModifyResult result = collection2.FindAndModify(query, sortBy, update, true);

            return(result.Ok);
        }
예제 #3
0
        public bool Exists(string name, string identifier)
        {
            var query = Query.And(Query.EQ("Name", name ?? ""),
                                  Query.EQ("Identifier", identifier ?? "")
                                  );
            Metric2 item = collection2.FindOne(query);

            return(item != null);
        }
예제 #4
0
 public void Add(Metric2 metric2)
 {
     collection2.Insert(metric2);
 }