JDevlieghere added a comment. In D127986#3590157 <https://reviews.llvm.org/D127986#3590157>, @clayborg wrote:
> The main questions is if we want --buffered for any log channel (file, > callback, or circular). If we add a --circular flag, then we just let things > accumulate in the LogHandler class. That's wasn't a problem I was trying to solve personally, but if you think that would be useful I don't mind supporting it. > The idea would be to add more stuff to the LogHandler base class to support > this: I don't think this has to (or even should) go into the base class. The idea behind the different handlers was to serve as an extension point. I think general buffering is a perfect example of that. The way I would implement that is by wrapping it into its own handler (e.g. `BufferedLogHandler`) which wraps around another Handler. The delegate handler can then be any of the existing handlers. The implementation would be pretty similar to what you described: class BufferedLogHandler : public LogHandler { public: void Emit(StringRef message) { if (m_buffer_size > 0) { if (m_buffer.size() + message.size() > m_buffer_size) { // If we exceed the buffer size, flush. m_delegate.Emit(m_buffer); m_delegate.DoEmit(message); m_buffer.clear(); } else { // Buffer size not exceeded yet. m_buffer += message.str(); } } else { DoEmit(message); } } private: size_t m_buffer_size = 0; std::string m_buffer; LogHandler m_delegate; }; CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127986/new/ https://reviews.llvm.org/D127986 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits