@@ -35,16 +35,18 @@ public void ExecuteDetails(
3535 IDictionary < string , object > localContext ,
3636 string visitorId ,
3737 ISet < string > responseTokens ,
38+ TraceHandler traceHandler ,
3839 OnDeviceDecisioningRuleSet ruleSet ,
3940 RequestDetailsUnion details ,
4041 PrefetchResponse prefetchResponse ,
4142 ExecuteResponse executeResponse ,
4243 IList < Notification > notifications )
4344 {
45+ traceHandler ? . UpdateRequest ( deliveryRequest , details , executeResponse != null ) ;
4446 var rules = GetDetailsRules ( details , ruleSet ) ;
4547 if ( rules == null )
4648 {
47- UnhandledResponse ( details , prefetchResponse , executeResponse ) ;
49+ UnhandledResponse ( details , prefetchResponse , executeResponse , traceHandler ) ;
4850 return ;
4951 }
5052
@@ -64,8 +66,8 @@ public void ExecuteDetails(
6466 continue ;
6567 }
6668
67- var consequence = this . ruleExecutor . ExecuteRule ( localContext , details , visitorId , rule , responseTokens ) ;
68- if ( ! HandleResult ( consequence , rule , details , prefetchResponse , executeResponse , notifications , ruleSet . GlobalMbox ) )
69+ var consequence = this . ruleExecutor . ExecuteRule ( localContext , details , visitorId , rule , responseTokens , traceHandler ) ;
70+ if ( ! HandleResult ( consequence , rule , details , prefetchResponse , executeResponse , notifications , traceHandler , ruleSet . GlobalMbox ) )
6971 {
7072 continue ;
7173 }
@@ -87,7 +89,7 @@ public void ExecuteDetails(
8789
8890 if ( ! handledAtLeastOnce )
8991 {
90- UnhandledResponse ( details , prefetchResponse , executeResponse ) ;
92+ UnhandledResponse ( details , prefetchResponse , executeResponse , traceHandler ) ;
9193 }
9294 }
9395
@@ -98,6 +100,7 @@ private static bool HandleResult(
98100 PrefetchResponse prefetchResponse ,
99101 ExecuteResponse executeResponse ,
100102 IList < Notification > notifications ,
103+ TraceHandler traceHandler ,
101104 string globalMbox = "target-global-mbox" )
102105 {
103106 if ( consequence == null || consequence . Count == 0 )
@@ -117,27 +120,31 @@ private static bool HandleResult(
117120 if ( executeResponse != null )
118121 {
119122 var notification = CreateNotification ( details , consequenceOptions , globalMbox ) ;
123+ traceHandler ? . AddNotification ( rule , notification ) ;
120124 notifications . Add ( notification ) ;
121125 }
122126
123127 return details . Match (
124- _ => HandlePageLoad ( prefetchResponse , executeResponse , consequenceOptions , consequenceMetrics ) ,
125- mboxRequest => HandleMboxRequest ( prefetchResponse , executeResponse , mboxRequest , consequenceOptions , consequenceMetrics ) ,
126- _ => HandleViewRequest ( prefetchResponse , consequenceName , consequenceOptions , consequenceMetrics ) ) ;
128+ _ => HandlePageLoad ( prefetchResponse , executeResponse , consequenceOptions , consequenceMetrics , traceHandler ) ,
129+ mboxRequest => HandleMboxRequest ( prefetchResponse , executeResponse , mboxRequest , consequenceOptions , consequenceMetrics , traceHandler ) ,
130+ _ => HandleViewRequest ( prefetchResponse , consequenceName , consequenceOptions , consequenceMetrics , traceHandler ) ) ;
127131 }
128132
129133 private static bool HandleViewRequest (
130134 PrefetchResponse prefetchResponse ,
131135 string consequenceName ,
132136 List < Option > consequenceOptions ,
133- List < Metric > consequenceMetrics )
137+ List < Metric > consequenceMetrics ,
138+ TraceHandler traceHandler )
134139 {
135140 if ( prefetchResponse == null )
136141 {
137142 return false ;
138143 }
139144
140145 var responseView = new View ( consequenceName , null , consequenceOptions , consequenceMetrics ) ;
146+ responseView . Trace = traceHandler ? . CurrentTrace ;
147+
141148 var views = prefetchResponse . Views ;
142149 if ( views == null )
143150 {
@@ -172,7 +179,8 @@ private static bool HandleMboxRequest(
172179 ExecuteResponse executeResponse ,
173180 MboxRequest mboxRequest ,
174181 List < Option > consequenceOptions ,
175- List < Metric > consequenceMetrics )
182+ List < Metric > consequenceMetrics ,
183+ TraceHandler traceHandler )
176184 {
177185 if ( prefetchResponse != null )
178186 {
@@ -199,6 +207,7 @@ private static bool HandleMboxRequest(
199207 } )
200208 . Where ( option => option . Type != null || option . Content != null )
201209 . ToList ( ) ,
210+ Trace = traceHandler ? . CurrentTrace ,
202211 } ;
203212 executeResponse . Mboxes ??= new List < MboxResponse > ( ) ;
204213 executeResponse . Mboxes . Add ( mboxResponse ) ;
@@ -209,7 +218,8 @@ private static bool HandlePageLoad(
209218 PrefetchResponse prefetchResponse ,
210219 ExecuteResponse executeResponse ,
211220 IList < Option > consequenceOptions ,
212- IList < Metric > consequenceMetrics )
221+ IList < Metric > consequenceMetrics ,
222+ TraceHandler traceHandler )
213223 {
214224 PageLoadResponse pageLoad = null ;
215225 if ( prefetchResponse != null )
@@ -228,6 +238,8 @@ private static bool HandlePageLoad(
228238 return false ;
229239 }
230240
241+ pageLoad . Trace = traceHandler ? . CurrentTrace ;
242+
231243 if ( consequenceOptions != null )
232244 {
233245 foreach ( var option in consequenceOptions )
@@ -291,41 +303,58 @@ private static List<Metric> GetMetrics(object metricsObject)
291303 return metricsObject is not JArray metricsArray || metricsArray . Count == 0 ? null : metricsArray . ToObject < List < Metric > > ( ) ;
292304 }
293305
294- private static void UnhandledResponse ( RequestDetailsUnion details , PrefetchResponse prefetchResponse , ExecuteResponse executeResponse )
306+ private static void UnhandledResponse (
307+ RequestDetailsUnion details ,
308+ PrefetchResponse prefetchResponse ,
309+ ExecuteResponse executeResponse ,
310+ TraceHandler traceHandler )
295311 {
296312 _ = details . Match < object > (
297- _ => UnhandledPageLoadResponse ( prefetchResponse , executeResponse ) ,
298- mboxRequest => UnhandledMboxResponse ( prefetchResponse , executeResponse , mboxRequest ) ,
299- _ => UnhandledViewResponse ( prefetchResponse ) ) ;
313+ _ => UnhandledPageLoadResponse ( prefetchResponse , executeResponse , traceHandler ) ,
314+ mboxRequest => UnhandledMboxResponse ( prefetchResponse , executeResponse , mboxRequest , traceHandler ) ,
315+ _ => UnhandledViewResponse ( prefetchResponse , traceHandler ) ) ;
300316 }
301317
302- private static object UnhandledViewResponse ( PrefetchResponse prefetchResponse )
318+ private static object UnhandledViewResponse ( PrefetchResponse prefetchResponse , TraceHandler traceHandler )
303319 {
304- var view = new View ( ) ;
320+ var view = new View { Trace = traceHandler ? . CurrentTrace } ;
305321 prefetchResponse . Views ??= new List < View > ( ) ;
306322 prefetchResponse . Views . Add ( view ) ;
307323 return null ;
308324 }
309325
310- private static object UnhandledMboxResponse ( PrefetchResponse prefetchResponse , ExecuteResponse executeResponse , MboxRequest mboxRequest )
326+ private static object UnhandledMboxResponse (
327+ PrefetchResponse prefetchResponse ,
328+ ExecuteResponse executeResponse ,
329+ MboxRequest mboxRequest ,
330+ TraceHandler traceHandler )
311331 {
312332 if ( prefetchResponse != null )
313333 {
314- var prefetchMboxResponse = new PrefetchMboxResponse ( mboxRequest . Index , mboxRequest . Name ) ;
334+ var prefetchMboxResponse = new PrefetchMboxResponse ( mboxRequest . Index , mboxRequest . Name )
335+ {
336+ Trace = traceHandler ? . CurrentTrace ,
337+ } ;
315338 prefetchResponse . Mboxes ??= new List < PrefetchMboxResponse > ( ) ;
316339 prefetchResponse . Mboxes . Add ( prefetchMboxResponse ) ;
317340 return null ;
318341 }
319342
320- var response = new MboxResponse ( mboxRequest . Index , mboxRequest . Name ) ;
343+ var response = new MboxResponse ( mboxRequest . Index , mboxRequest . Name )
344+ {
345+ Trace = traceHandler ? . CurrentTrace ,
346+ } ;
321347 executeResponse . Mboxes ??= new List < MboxResponse > ( ) ;
322348 executeResponse . Mboxes . Add ( response ) ;
323349 return null ;
324350 }
325351
326- private static object UnhandledPageLoadResponse ( PrefetchResponse prefetchResponse , ExecuteResponse executeResponse )
352+ private static object UnhandledPageLoadResponse (
353+ PrefetchResponse prefetchResponse ,
354+ ExecuteResponse executeResponse ,
355+ TraceHandler traceHandler )
327356 {
328- var response = new PageLoadResponse ( ) ;
357+ var response = new PageLoadResponse { Trace = traceHandler ? . CurrentTrace } ;
329358 if ( prefetchResponse != null )
330359 {
331360 prefetchResponse . PageLoad = response ;
0 commit comments