コード例 #1
0
        private static string BuildCommandString(RequestResultArgs request)
        {
            var url = request.Url;

            var commandTextBuilder = new StringBuilder();

            // Basic request information
            // HTTP GET - 200 (Cached)
            commandTextBuilder.AppendFormat("HTTP {0} - {1} ({2})\n",
                                            request.Method,
                                            request.HttpResult,
                                            request.Status);

            // Request URL
            commandTextBuilder.AppendFormat("{0}\n\n", FormatUrl(url));

            // Append query
            var query = FormatQuery(url);

            if (!String.IsNullOrWhiteSpace(query))
            {
                commandTextBuilder.AppendFormat("{0}\n\n", query);
            }

            // Append POSTed data, if any (multi-get, PATCH, etc.)
            if (!String.IsNullOrWhiteSpace(request.PostedData))
            {
                commandTextBuilder.Append(request.PostedData);
            }

            // Set the command string to a formatted string
            return(commandTextBuilder.ToString());
        }
コード例 #2
0
        private static void IncludeTiming(RequestResultArgs request)
        {
            if (MiniProfiler.Current == null)
            {
                return;
            }

            var elapsedTicks       = (long)ElapsedTicks.Invoke(MiniProfiler.Current, null);
            var elapsedSeconds     = elapsedTicks / (double)Stopwatch.Frequency;
            var profilingStartedAt = DateTime.UtcNow.AddSeconds(-elapsedSeconds);

#pragma warning disable 612,618
            var secs   = (request.At - profilingStartedAt).TotalSeconds;
            var timing = new SqlTiming // The default constructor is obsolete. We know about that; this is a hack anyway.
            {
                Id                             = Guid.NewGuid(),
                CommandString                  = FormatQuery(request.Url),
                StartMilliseconds              = (decimal)secs * 1000,
                DurationMilliseconds           = (decimal)request.DurationMilliseconds,
                FirstFetchDurationMilliseconds = (decimal)request.DurationMilliseconds,
                ExecuteType                    = ToExecuteType(request.Status),
            };
#pragma warning restore 612,618

            MiniProfiler.Current.Head.AddSqlTiming(timing);
            MiniProfiler.Current.HasSqlTimings = true;
        }
コード例 #3
0
        void LogRequest(object sender, RequestResultArgs e)
        {
            if (LogWriter == null)
            {
                return;
            }

            LogWriter.WriteLine(@"
{0} - {1}
Url: {2}
Duration: {3} milliseconds
Method: {4}
Posted Data: {5}
Http Result: {6}
Result Data: {7}
",
                                e.At,                   // 0
                                e.Status,               // 1
                                e.Url,                  // 2
                                e.DurationMilliseconds, // 3
                                e.Method,               // 4
                                e.PostedData,           // 5
                                e.HttpResult,           // 6
                                e.Result);              // 7
        }
コード例 #4
0
        void LogRequest(object sender, RequestResultArgs e)
        {
            if (LogWriter == null)
            {
                return;
            }

            var entry = new StringBuilder().AppendFormat(@"
{0} - {1}
Url: {2}
Duration: {3} milliseconds
Method: {4}
Posted Data: {5}
Http Result: {6}
Result Data: {7}
Total Size: {8:n0}",
                                                         e.At,
                                                         e.Status,
                                                         e.Url,
                                                         e.DurationMilliseconds,
                                                         e.Method,
                                                         e.PostedData,
                                                         e.HttpResult,
                                                         e.Result,
                                                         e.TotalSize);

            foreach (var item in e.AdditionalInformation)
            {
                entry.AppendFormat("{0}: {1}", item.Key, item.Value);
            }

            entry.AppendLine();
            LogWriter.WriteLine(entry.ToString());
        }
コード例 #5
0
        /// <summary>
        /// Invoke the LogRequest event
        /// </summary>
        internal void InvokeLogRequest(IHoldProfilingInformation sender, RequestResultArgs e)
        {
            var handler = LogRequest;

            if (handler != null)
            {
                handler(sender, e);
            }
        }
コード例 #6
0
        /// <summary>
        /// Invoke the LogRequest event
        /// </summary>
        internal void OnLogRequest(IHoldProfilingInformation sender, RequestResultArgs args)
        {
            var handler = LogRequest;

            if (handler != null)
            {
                handler(sender, args);
            }
        }
コード例 #7
0
ファイル: Monitor.cs プロジェクト: tcabanski/RavenRelic
        private static void EndRequest(object sender, RequestResultArgs e)
        {
            string queryName = e.Url.Split('?')[0];

            if (queryName.StartsWith("/databases", StringComparison.InvariantCultureIgnoreCase))
            {
                // Trim out the database prefix to the query
                queryName = "/" + String.Join("/", queryName.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Skip(2));
            }
            NewRelic.Api.Agent.NewRelic.RecordResponseTimeMetric("RavenDB/Query" + queryName, (long)e.DurationMilliseconds);
        }
コード例 #8
0
        private static void EndRequest(object sender, RequestResultArgs e)
        {
            IDisposable request;

            if (_Requests.TryRemove(e.Url, out request))
            {
                if (request != null)
                {
                    request.Dispose();
                }
            }
        }
コード例 #9
0
ファイル: Profiler.cs プロジェクト: clupasq/Glimpse.RavenDb
 private static void EndRequest(object sender, RequestResultArgs e)
 {
     if (!Enabled)
     {
         return;
     }
     Timeline("Query - " + e.Url, new TimerResult
     {
         StartTime = e.At.Subtract(TimeSpan.FromMilliseconds(e.DurationMilliseconds)),
         Offset    = e.At.Subtract(TimeSpan.FromMilliseconds(e.DurationMilliseconds)).Subtract(ExecutionTimerFactory().RequestStart.ToUniversalTime()),
         Duration  = TimeSpan.FromMilliseconds(e.DurationMilliseconds),
     });
 }
コード例 #10
0
 public static RequestResultArgs FormatRequest(RequestResultArgs input)
 {
     return(new RequestResultArgs
     {
         DurationMilliseconds = input.DurationMilliseconds,
         At = input.At,
         HttpResult = input.HttpResult,
         Method = input.Method,
         Status = input.Status,
         Url = input.Url,
         PostedData = FilterData(input.PostedData),
         Result = FilterData(input.Result)
     });
 }
コード例 #11
0
ファイル: RavenMiniProfiler.cs プロジェクト: ygalbel/dotnet
        private static void IncludeTiming(RequestResultArgs request)
        {
            if (MiniProfiler.Current == null || MiniProfiler.Current.Head == null)
            {
                return;
            }

            MiniProfiler.Current.Head.AddCustomTiming("raven", new RavenTiming(request, MiniProfiler.Current)
            {
                Id = Guid.NewGuid(),
                DurationMilliseconds           = (decimal)request.DurationMilliseconds,
                FirstFetchDurationMilliseconds = (decimal)request.DurationMilliseconds,
                ExecuteType = request.Status.ToString()
            });
        }
コード例 #12
0
        public ActionResult Edit(FinancialTransactionDto transaction)
        {
            RequestResultArgs requestResult = null;

            _callback.Completed += (args) => requestResult = args;
            var cmd = new UpdateFinancialTransactionCommand(transaction);

            _commandProcessor.Execute(cmd);

            if (!requestResult.Succeeded)
            {
                this.SetErrorMessageContents(requestResult.MessageContents);
                return(View(transaction));
            }
            return(RedirectToAction("Index", new { accountId = transaction.AccountId }));
        }
コード例 #13
0
        private static void IncludeTiming(RequestResultArgs request, MiniProfiler profiler)
        {
            if (profiler == null || profiler.Head == null)
            {
                return;
            }

            var formattedRequest = JsonFormatter.FormatRequest(request);

            profiler.Head.AddCustomTiming("raven", new CustomTiming(profiler, BuildCommandString(formattedRequest))
            {
                Id = Guid.NewGuid(),
                DurationMilliseconds           = (decimal)formattedRequest.DurationMilliseconds,
                FirstFetchDurationMilliseconds = (decimal)formattedRequest.DurationMilliseconds,
                ExecuteType = formattedRequest.Status.ToString()
            });
        }
        public ActionResult Create(FinancialAccountDto account)
        {
            RequestResultArgs requestResult = null;

            _callback.Completed += (args) => requestResult = args;
            account.Id           = Guid.NewGuid();
            var cmd = new AddFinancialAccountCommand(account);

            _commandProcessor.Execute(cmd);

            if (!requestResult.Succeeded)
            {
                this.SetErrorMessageContents(requestResult.MessageContents);
                return(View(account));
            }
            return(RedirectToAction("Index"));
        }
コード例 #15
0
        private static string BuildCommandString(RequestResultArgs request)
        {
            var uri = new Uri(request.Url);

            var sb = new StringBuilder();

            // Basic request information
            // HTTP GET - 200 (Cached)
            sb.AppendFormat("HTTP {0} - {1} ({2})\n",
                            request.Method,
                            request.HttpResult,
                            request.Status);

            // Request URL
            sb.AppendFormat("{0}://{1}{2}\n\n", uri.Scheme, uri.Authority, uri.AbsolutePath);
            // Append query
            if (uri.Query.HasValue())
            {
                var match = IndexQueryPattern.Match(uri.AbsolutePath);
                if (match.Success)
                {
                    string index = match.Groups[1].Value;
                    if (index.HasValue())
                    {
                        sb.Append("index=").AppendLine(index);
                    }
                }
                if (uri.Query.Length > 1)
                {
                    var qsValues = Uri.UnescapeDataString(uri.Query.Substring(1).Replace("&", "\n").Trim());
                    sb.AppendLine(qsValues);
                }
            }

            // Append POSTed data, if any (multi-get, PATCH, etc.)
            if (request.PostedData.HasValue())
            {
                sb.Append(request.PostedData);
            }

            // Set the command string to a formatted string
            return(sb.ToString());
        }
        public ActionResult DeleteConfirmed(FinancialAccountDto account)
        {
            if (account == null || account.Id == Guid.Empty)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            RequestResultArgs requestResult = null;

            _callback.Completed += (args) => requestResult = args;
            var cmd = new RemoveFinancialAccountCommand(account.Id);

            _commandProcessor.Execute(cmd);

            if (!requestResult.Succeeded)
            {
                this.SetErrorMessageContents(requestResult.MessageContents);
                return(View(account));
            }
            return(RedirectToAction("Index"));
        }
コード例 #17
0
        public ActionResult DeleteConfirmed(FinancialTransactionDto transaction)
        {
            if (transaction == null || transaction.Id == null || transaction.AccountId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            RequestResultArgs requestResult = null;

            _callback.Completed += (args) => requestResult = args;
            var cmd = new RemoveFinancialTransactionCommand(transaction.Id, transaction.AccountId);

            _commandProcessor.Execute(cmd);

            if (!requestResult.Succeeded)
            {
                this.SetErrorMessageContents(requestResult.MessageContents);
                return(View(transaction));
            }

            return(RedirectToAction("Index", new { accountId = transaction.AccountId }));
        }
コード例 #18
0
        public RavenTiming(RequestResultArgs request, MiniProfiler profiler)
            : base(profiler, null, null)
        {
            if (profiler == null)
            {
                throw new ArgumentNullException("profiler");
            }

            _requestUrl = request.Url;

            var commandTextBuilder = new StringBuilder();

            // Basic request information
            // HTTP GET - 200 (Cached)
            commandTextBuilder.AppendFormat("HTTP {0} - {1} ({2})\n",
                                            request.Method,
                                            request.HttpResult,
                                            request.Status);

            // Request URL
            commandTextBuilder.AppendFormat("{0}\n\n", FormatUrl());

            // Append query
            var query = FormatQuery();

            if (!String.IsNullOrWhiteSpace(query))
            {
                commandTextBuilder.AppendFormat("{0}\n\n", query);
            }

            // Append POSTed data, if any (multi-get, PATCH, etc.)
            if (!String.IsNullOrWhiteSpace(request.PostedData))
            {
                commandTextBuilder.Append(request.PostedData);
            }

            // Set the command string to a formatted string
            CommandString = commandTextBuilder.ToString();
        }
コード例 #19
0
 private static void EndRequest(object sender, RequestResultArgs e)
 {
     DurationOnTimeline("Query - " + e.Url, e.At.Subtract(TimeSpan.FromMilliseconds(e.DurationMilliseconds)), TimeSpan.FromMilliseconds(e.DurationMilliseconds));
 }
コード例 #20
0
ファイル: Profiler.cs プロジェクト: tzarger/Glimpse.RavenDb
 private static void EndRequest(object sender, RequestResultArgs e)
 {
     GlimpseTimer.Stop("Query - " + e.Url);
 }