11#include < Babylon/ScriptLoader.h>
22#include < UrlLib/UrlLib.h>
33#include < arcana/threading/task.h>
4+ #include < arcana/tracing/trace_region.h>
5+ #include < sstream>
46#include " Babylon/DebugTrace.h"
57
68namespace Babylon
@@ -17,13 +19,18 @@ namespace Babylon
1719 void LoadScript (std::string url)
1820 {
1921 UrlLib::UrlRequest request;
20- DEBUG_TRACE (" Loading script at url %s" , url.c_str ());
22+ std::string traceName = (std::ostringstream{} << " Loading script at url " << url).str ();
23+ DEBUG_TRACE (traceName);
24+ arcana::trace_region requestRegion{traceName.c_str ()};
2125 request.Open (UrlLib::UrlMethod::Get, url);
2226 request.ResponseType (UrlLib::UrlResponseType::String);
23- m_task = arcana::when_all (m_task, request.SendAsync ()).then (arcana::inline_scheduler, arcana::cancellation::none (), [dispatchFunction = m_dispatchFunction, request = std::move (request), url = std::move (url)](auto ) mutable {
27+ const auto requestTask = request.SendAsync ().then (arcana::inline_scheduler, arcana::cancellation::none (), [requestRegion{std::move (requestRegion)}]() { });
28+ m_task = arcana::when_all (m_task, requestTask).then (arcana::inline_scheduler, arcana::cancellation::none (), [dispatchFunction = m_dispatchFunction, request = std::move (request), url = std::move (url)](auto ) mutable {
2429 arcana::task_completion_source<void , std::exception_ptr> taskCompletionSource{};
2530 dispatchFunction ([taskCompletionSource, request = std::move (request), url = std::move (url)](Napi::Env env) mutable {
26- DEBUG_TRACE (" Evaluating script at url %s" , url.c_str ());
31+ std::string traceName = (std::ostringstream{} << " Evaluating script at url " << url << " (LoadScript)" ).str ();
32+ DEBUG_TRACE (traceName.c_str ());
33+ arcana::trace_region evalRegion{traceName.c_str ()};
2734 Napi::Eval (env, request.ResponseString ().data (), url.data ());
2835 taskCompletionSource.complete ();
2936 });
@@ -37,6 +44,8 @@ namespace Babylon
3744 [dispatchFunction = m_dispatchFunction, source = std::move (source), url = std::move (url)](auto ) mutable {
3845 arcana::task_completion_source<void , std::exception_ptr> taskCompletionSource{};
3946 dispatchFunction ([taskCompletionSource, source = std::move (source), url = std::move (url)](Napi::Env env) mutable {
47+ std::string traceName = (std::ostringstream{} << " Evaluating script at url " << url << " (Eval)" ).str ();
48+ arcana::trace_region evalRegion{traceName.c_str ()};
4049 Napi::Eval (env, source.data (), url.data ());
4150 taskCompletionSource.complete ();
4251 });
0 commit comments