void FMessageTracer::TraceHandledMessage( const IMessageContextRef& Context, const IReceiveMessagesRef& Recipient ) { if (!Running) { return; } double Timestamp = FPlatformTime::Seconds(); Traces.Enqueue([=]() { // look up message & endpoint info FMessageTracerMessageInfoPtr MessageInfo = MessageInfos.FindRef(Context); if (!MessageInfo.IsValid()) { return; } FMessageTracerEndpointInfoPtr EndpointInfo = RecipientsToEndpointInfos.FindRef(Recipient->GetRecipientId()); if (!EndpointInfo.IsValid()) { return; } // update message information FMessageTracerDispatchStatePtr DispatchState = MessageInfo->DispatchStates.FindRef(EndpointInfo); if (DispatchState.IsValid()) { DispatchState->TimeHandled = Timestamp; } }); }
void FMessageTracer::ProcessHandledMessage( IMessageContextRef Context, double TimeSeconds, FGuid RecipientId ) { FMessageTracerMessageInfoPtr MessageInfo = MessageInfos.FindRef(Context); if (!MessageInfo.IsValid()) { return; } FMessageTracerEndpointInfoPtr EndpointInfo = RecipientsToEndpointInfos.FindRef(RecipientId); if (!EndpointInfo.IsValid()) { return; } // update message information FMessageTracerDispatchStatePtr DispatchState = MessageInfo->DispatchStates.FindRef(EndpointInfo); if (DispatchState.IsValid()) { DispatchState->TimeHandled = TimeSeconds; } }