- `PROF_TRACE_SOCKET` - optional, defines port of the socket. `PROF_TRACE_STREAM`
should be `Socket`. The default port is 6050.
+ - `PROF_TRACE_SOCKET_PROMPT` - optional, defines server prompt string.
+ `PROF_TRACE_STREAM` should be `Socket`.
+
### Control logging
- `PROF_LOG_STREAM` - defines the output channel for log messages. Can be
FetchValue("PROF_TRACE_STREAM", new_config.OutputStream);
FetchValue("PROF_TRACE_SOCKET", new_config.SocketPort);
+ FetchValue("PROF_TRACE_SOCKET_PROMPT", new_config.SocketPrompt);
// Apply changes to the current configuration.
config = new_config;
: OutputStream(TraceLogOutputStream::Stdout)
, FileName()
, SocketPort()
+ , SocketPrompt()
{}
void TraceLogConfig::Validate()
//
std::string SocketPort;
+ std::string SocketPrompt;
static constexpr int MinAllowedSocketPort = 1;
static constexpr int MaxAllowedSocketPort = 65535;
static constexpr uint16_t DefaultSocketPort = 6050;
socket_port = static_cast<uint16_t>(stoi(config.SocketPort));
}
m_traceLog.reset(
- ITraceLog::Create(ITraceLog::SocketStream, socket_port));
+ ITraceLog::Create(ITraceLog::SocketStream, socket_port, config.SocketPrompt));
}
}
}
}
- TraceLog(SocketStream_t, uint16_t port)
+ TraceLog(SocketStream_t, uint16_t port, const std::string &SocketPrompt)
: m_stream(*new net::osocketstream())
, m_stream_owner(true)
, m_tracefmt(m_stream)
{
m_stream.exceptions(std::ios::failbit | std::ios::badbit);
static_cast<net::osocketstream&>(m_stream).start(port);
+ if (!SocketPrompt.empty())
+ {
+ m_stream << SocketPrompt << std::endl;
+ }
}
catch (...)
{
// static
ITraceLog *ITraceLog::Create(
- SocketStream_t SocketStream, uint16_t port)
+ SocketStream_t SocketStream, uint16_t port, const std::string &SocketPrompt)
{
- return new TraceLog(SocketStream, port);
+ return new TraceLog(SocketStream, port, SocketPrompt);
}
static ITraceLog *Create(FileStream_t, const std::string &filename);
- static ITraceLog *Create(SocketStream_t, uint16_t port);
+ static ITraceLog *Create(SocketStream_t, uint16_t port, const std::string &SocketPrompt);
//
// Profiler records