4#include "Stroika/Frameworks/StroikaPreComp.h"
7#include "Stroika/Foundation/IO/Network/HTTP/Exception.h"
9#include "LoggingInterceptor.h"
14using namespace Stroika::Foundation::Memory;
16using namespace Stroika::Frameworks;
24shared_ptr<ILogHandler::MessageInstance> ILogHandler::Started (
Message& m)
26 return make_shared<MessageInstance> (m, Time::GetTickCount ());
35 Rep_ (
const shared_ptr<ILogHandler>& logger)
39 virtual void HandleFault (
Message& m, [[maybe_unused]]
const exception_ptr& e)
const noexcept override
41 shared_ptr<ILogHandler::MessageInstance> logID;
43 auto rwLock = fOngoingMessages_.rwget ();
44 Assert (rwLock->Lookup (&m));
45 logID = *rwLock->Lookup (&m);
48 fLogger_->Completed (logID);
50 virtual void HandleMessage (
Message& m)
const override
52 shared_ptr<ILogHandler::MessageInstance> logID = fLogger_->Started (m);
53 Assert (not fOngoingMessages_->Lookup (&m).has_value ());
54 fOngoingMessages_.rwget ().rwref ().Add (&m, logID);
56 virtual void CompleteNormally (
Message& m)
const override
58 shared_ptr<ILogHandler::MessageInstance> logID;
60 auto rwLock = fOngoingMessages_.rwget ();
61 Assert (rwLock->Lookup (&m));
62 logID = *rwLock->Lookup (&m);
65 fLogger_->Completed (logID);
69 return "LoggingInterceptor"sv;
71 shared_ptr<ILogHandler> fLogger_;
75LoggingInterceptor::LoggingInterceptor (
const shared_ptr<ILogHandler>& logger)
76 : inherited{make_shared<Rep_> (logger)}
String is like std::u32string, except it is much easier to use, often much more space efficient,...
Wrap any object with Synchronized<> and it can be used similarly to the base type,...
STRING_TYPE ToString(FLOAT_TYPE f, const ToStringOptions &options={})