@@ -15,6 +15,20 @@ public SimpleEventSource() : base(true) { }
15
15
16
16
[ Event ( 1 ) ]
17
17
internal void MathResult ( int x , int y , int z , string formula ) { this . WriteEvent ( 1 , x , y , z , formula ) ; }
18
+
19
+ [ Event ( 2 ) ]
20
+ internal void DateTimeEvent ( DateTime dateTime ) => WriteEvent ( 2 , dateTime ) ;
21
+
22
+
23
+ [ NonEvent ]
24
+ private unsafe void WriteEvent ( int eventId , DateTime dateTime )
25
+ {
26
+ EventData * desc = stackalloc EventData [ 1 ] ;
27
+ long fileTime = dateTime . ToFileTimeUtc ( ) ;
28
+ desc [ 0 ] . DataPointer = ( IntPtr ) ( & fileTime ) ;
29
+ desc [ 0 ] . Size = 8 ;
30
+ WriteEventCore ( eventId , 1 , desc ) ;
31
+ }
18
32
}
19
33
20
34
internal sealed class SimpleEventListener : EventListener
@@ -23,6 +37,7 @@ internal sealed class SimpleEventListener : EventListener
23
37
private readonly EventLevel _level ;
24
38
25
39
public int EventCount { get ; private set ; } = 0 ;
40
+ public DateTime DateObserved { get ; private set ; } = DateTime . MinValue ;
26
41
27
42
public SimpleEventListener ( string targetSourceName , EventLevel level )
28
43
{
@@ -41,13 +56,19 @@ protected override void OnEventSourceCreated(EventSource source)
41
56
42
57
protected override void OnEventWritten ( EventWrittenEventArgs eventData )
43
58
{
44
- EventCount ++ ;
59
+ if ( eventData . EventId == 2 )
60
+ {
61
+ DateObserved = ( DateTime ) eventData . Payload [ 0 ] ;
62
+ }
63
+ else
64
+ EventCount ++ ;
45
65
}
46
66
}
47
67
48
68
class EventPipeSmoke
49
69
{
50
70
private static int messageIterations = 100 ;
71
+ private static readonly DateTime ThePast = DateTime . UtcNow ;
51
72
52
73
static int Main ( string [ ] args )
53
74
{
@@ -68,10 +89,12 @@ static int Main(string[] args)
68
89
69
90
eventSource . MathResult ( x , y , x + y , formula ) ;
70
91
}
92
+ eventSource . DateTimeEvent ( ThePast ) ;
71
93
Console . WriteLine ( "\t End: Messaging.\n " ) ;
72
94
73
95
Console . WriteLine ( $ "\t EventListener received { listener . EventCount } event(s)\n ") ;
74
- pass = listener . EventCount == messageIterations ;
96
+ Console . WriteLine ( $ "\t EventListener received { listener . DateObserved } vs { ThePast } \n ") ;
97
+ pass = listener . EventCount == messageIterations && ThePast == listener . DateObserved ;
75
98
}
76
99
77
100
return pass ? 100 : - 1 ;
0 commit comments