4#include "Stroika/Frameworks/StroikaPreComp.h"
7#include "Stroika/Foundation/IO/Network/HTTP/Exception.h"
10#include "LoggingInterceptor.h"
15using namespace Stroika::Foundation::Memory;
17using namespace Stroika::Frameworks;
25shared_ptr<ILogHandler::MessageInstance> ILogHandler::Started (
Message& m)
27 return Memory::MakeSharedPtr<MessageInstance> (m, Time::GetTickCount ());
36 Rep_ (
const shared_ptr<ILogHandler>& logger)
40 virtual void HandleFault (
Message& m, [[maybe_unused]]
const exception_ptr& e)
const noexcept override
42 shared_ptr<ILogHandler::MessageInstance> logID;
44 auto rwLock = fOngoingMessages_.rwget ();
45 Assert (rwLock->Lookup (&m));
46 logID = *rwLock->Lookup (&m);
49 fLogger_->Completed (logID);
51 virtual void HandleMessage (
Message& m)
const override
53 shared_ptr<ILogHandler::MessageInstance> logID = fLogger_->Started (m);
54 Assert (not fOngoingMessages_->Lookup (&m).has_value ());
55 fOngoingMessages_.rwget ().rwref ().Add (&m, logID);
57 virtual void CompleteNormally (
Message& m)
const override
59 shared_ptr<ILogHandler::MessageInstance> logID;
61 auto rwLock = fOngoingMessages_.rwget ();
62 Assert (rwLock->Lookup (&m));
63 logID = *rwLock->Lookup (&m);
66 fLogger_->Completed (logID);
70 return "LoggingInterceptor"sv;
72 shared_ptr<ILogHandler> fLogger_;
76LoggingInterceptor::LoggingInterceptor (
const shared_ptr<ILogHandler>& logger)
auto MakeSharedPtr(ARGS_TYPE &&... args) -> shared_ptr< T >
same as make_shared, but if type T has block allocation, then use block allocation for the 'shared pa...
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={})