diff Implab/Diagnostics/LogicalOperation.cs @ 35:2880242f987a diagnostics

initial log capabilities
author cin
date Mon, 14 Apr 2014 18:25:26 +0400
parents
children 4c0e5ef99986
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab/Diagnostics/LogicalOperation.cs	Mon Apr 14 18:25:26 2014 +0400
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Implab.Diagnostics {
+    public class LogicalOperation {
+        readonly LogicalOperation m_parent;
+        readonly string m_name;
+        readonly int m_level;
+        readonly int m_timestamp;
+
+        public LogicalOperation()
+            : this(null, null) {
+        }
+
+        public LogicalOperation(string name, LogicalOperation parent) {
+            m_name = name ?? String.Empty;
+            m_parent = parent;
+
+            m_level = parent == null ? 0 : parent.Level + 1;
+            m_timestamp = Environment.TickCount;
+        }
+
+        public int Duration {
+            get {
+                var dt = Environment.TickCount - m_timestamp;
+                return dt < 0 ? int.MaxValue + dt : dt; // handle overflow
+            }
+        }
+
+        public LogicalOperation Parent {
+            get {
+                return m_parent;
+            }
+        }
+
+        public int Level {
+            get { return m_level; }
+        }
+
+        public string Name {
+            get { return m_name; }
+        }
+    }
+}