std::shared_ptr<TSocketReadThread> THttpConnection::CreateReadThread(std::shared_ptr<SoySocket> Socket,SoyRef ConnectionRef) { auto OnResponse = [this](std::shared_ptr<Soy::TReadProtocol>& pProtocol) { #if defined(ENABLE_RTTI) auto pHttpProtocol = std::dynamic_pointer_cast<Http::TResponseProtocol>( pProtocol ); #else auto pHttpProtocol = std::static_pointer_cast<Http::TResponseProtocol>( pProtocol ); #endif mOnResponse.OnTriggered( *pHttpProtocol ); }; std::shared_ptr<TSocketReadThread> ReadThread( new THttpReadThread( Socket, ConnectionRef ) ); mOnDataRecievedListener = ReadThread->mOnDataRecieved.AddListener( OnResponse ); ReadThread->Start(); return ReadThread; }
static DWORD WINAPI StderrReadThread (LPVOID) { return ReadThread (_StderrPipeRead, _StderrString, _StderrStringLock); }
static DWORD WINAPI StdoutReadThread (LPVOID) { return ReadThread (_StdoutPipeRead, _StdoutString, _StdoutStringLock); }