Exemple #1
0
        public void Intercept(IInvocation invocation)
        {
            MethodExecutionInfo context = new MethodExecutionInfo();

            context.MethodName    = invocation.Method.Name;
            context.ExecutionDate = DateTime.Now;
            context.HasException  = false;
            var watch = Stopwatch.StartNew();

            try
            {
                invocation.Proceed();
            }
            catch (Exception ex)
            {
                try
                {
                    watch.Stop();
                    context.Duration     = watch.ElapsedMilliseconds;
                    context.HasException = true;
                    _clientProcessor.AddHeartbeatContext(context);
                }
                catch
                {
                    // ignored
                }
                throw;
            }

            watch.Stop();
            context.Duration = watch.ElapsedMilliseconds;
            _clientProcessor.AddHeartbeatContext(context);
        }
        public void AddHeartbeatContext(MethodExecutionInfo context)
        {
            var acquiredLock = false;

            Monitor.Enter(_infoReserve, ref acquiredLock);
            if (!acquiredLock)
            {
                Console.WriteLine("NO LOCK!");
            }
            try
            {
                _infoReserve.ExecStats.Add(context);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (acquiredLock)
                {
                    Monitor.Exit(_infoReserve);
                }
            }
        }
Exemple #3
0
        public void Intercept(IInvocation invocation)
        {
            MethodExecutionInfo context = new MethodExecutionInfo();
            context.MethodName = invocation.Method.Name;
            context.ExecutionDate = DateTime.Now;
            context.HasException = false;
            var watch = Stopwatch.StartNew();
            try
            {
                invocation.Proceed();
            }
            catch (Exception ex)
            {
                try
                {
                    watch.Stop();
                    context.Duration = watch.ElapsedMilliseconds;
                    context.HasException = true;
                    _clientProcessor.AddHeartbeatContext(context);
                }
                catch
                {
                    // ignored
                }
                throw;
            }

            watch.Stop();
            context.Duration = watch.ElapsedMilliseconds;
            _clientProcessor.AddHeartbeatContext(context);
        }
Exemple #4
0
 public void AddHeartbeatContext(MethodExecutionInfo context)
 {
     var acquiredLock = false;
     Monitor.Enter(_infoReserve, ref acquiredLock);
     if (!acquiredLock)
         Console.WriteLine("NO LOCK!");
     try
     {
         _infoReserve.ExecStats.Add(context);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
     finally
     {
         if (acquiredLock)
             Monitor.Exit(_infoReserve);
     }
 }