diff --git a/src/HTTPSinkImpl.cpp b/src/HTTPSinkImpl.cpp index d48b26dc33..75dd4129c0 100644 --- a/src/HTTPSinkImpl.cpp +++ b/src/HTTPSinkImpl.cpp @@ -248,14 +248,21 @@ void HTTPSinkImpl::SendJSON(llvm::raw_ostream& os, SourceImpl& source, os.flush(); } -HTTPSinkImpl::HTTPSinkImpl(llvm::StringRef name, +HTTPSinkImpl::HTTPSinkImpl(llvm::StringRef name, llvm::StringRef description, std::unique_ptr acceptor) - : SinkImpl{name}, m_acceptor{std::move(acceptor)} { + : SinkImpl{name}, + m_description(description), + m_acceptor{std::move(acceptor)} { m_serverThread = std::thread(&HTTPSinkImpl::ServerThreadMain, this); } HTTPSinkImpl::~HTTPSinkImpl() { Stop(); } +void HTTPSinkImpl::GetDescription(llvm::SmallVectorImpl& desc) const { + llvm::raw_svector_ostream oss{desc}; + oss << m_description; +} + void HTTPSinkImpl::Stop() { m_active = false; @@ -436,10 +443,14 @@ namespace cs { CS_Sink CreateHTTPSink(llvm::StringRef name, llvm::StringRef listenAddress, int port, CS_Status* status) { + llvm::SmallString<128> descBuf; + llvm::raw_svector_ostream desc{descBuf}; + desc << "HTTP Server on port " << port; llvm::SmallString<128> str{listenAddress}; auto sink = std::make_shared( - name, std::unique_ptr(new wpi::TCPAcceptor( - port, str.c_str(), Logger::GetInstance()))); + name, desc.str(), + std::unique_ptr( + new wpi::TCPAcceptor(port, str.c_str(), Logger::GetInstance()))); return Sinks::GetInstance().Allocate(SinkData::kHTTP, sink); } diff --git a/src/HTTPSinkImpl.h b/src/HTTPSinkImpl.h index bef53ada91..1f7ca94003 100644 --- a/src/HTTPSinkImpl.h +++ b/src/HTTPSinkImpl.h @@ -31,7 +31,7 @@ class SourceImpl; class HTTPSinkImpl : public SinkImpl { public: - HTTPSinkImpl(llvm::StringRef name, + HTTPSinkImpl(llvm::StringRef name, llvm::StringRef description, std::unique_ptr acceptor); ~HTTPSinkImpl() override; @@ -60,6 +60,8 @@ class HTTPSinkImpl : public SinkImpl { void ServerThreadMain(); void ConnThreadMain(wpi::NetworkStream* stream); + std::string m_description; + std::unique_ptr m_acceptor; std::atomic_int m_sourceChannel; std::atomic_bool m_active; // set to false to terminate threads