| 36 | 1 using System; | 
|  | 2 | 
|  | 3 namespace Implab.Diagnostics { | 
|  | 4     public class TraceEvent { | 
|  | 5         public string Message { | 
|  | 6             get; | 
|  | 7             private set; | 
|  | 8         } | 
|  | 9 | 
|  | 10         public TraceEventType EventType { | 
|  | 11             get; | 
|  | 12             private set; | 
|  | 13         } | 
|  | 14 | 
| 195 | 15         /// <summary> | 
|  | 16         /// The logical operation this event belongs to. | 
|  | 17         /// </summary> | 
|  | 18         public LogicalOperation Operation { | 
|  | 19             get; | 
|  | 20             private set; | 
|  | 21         } | 
|  | 22 | 
|  | 23         /// <summary> | 
|  | 24         /// Gets the time offset in milliseconds from the start of the operation, if the operation is not specified the value is zero. | 
|  | 25         /// </summary> | 
|  | 26         public int OperationTime { | 
|  | 27             get; | 
|  | 28             private set; | 
|  | 29         } | 
|  | 30 | 
|  | 31         public TraceEvent(LogicalOperation operation, TraceEventType type, string message) { | 
| 36 | 32             EventType = type; | 
|  | 33             Message = message; | 
| 195 | 34             Operation = operation; | 
|  | 35             if (operation != null) | 
|  | 36                 OperationTime = operation.Duration; | 
| 36 | 37         } | 
|  | 38 | 
| 40 | 39         public override string ToString() { | 
| 133 | 40             return Message; | 
| 40 | 41         } | 
|  | 42 | 
| 195 | 43         public static TraceEvent Create(LogicalOperation operation, TraceEventType type, string format, params object[] args) { | 
| 219 | 44             return new TraceEvent(operation, type, format == null ? String.Empty : args == null || args.Length == 0 ? format : String.Format(format, args)); | 
| 36 | 45         } | 
|  | 46     } | 
|  | 47 } |