21#include "absl/base/thread_annotations.h"
22#include "absl/strings/string_view.h"
23#include "absl/synchronization/mutex.h"
30class PrinterMessageCallbackImpl {
32 PrinterMessageCallbackImpl(std::ostream& output_stream,
33 const absl::string_view prefix)
34 : output_stream_(output_stream), prefix_(prefix) {}
36 void Call(
const std::vector<std::string>& messages) {
37 const absl::MutexLock lock(&mutex_);
38 for (
const std::string&
message : messages) {
39 output_stream_ << prefix_ <<
message <<
'\n';
41 output_stream_.flush();
46 std::ostream& output_stream_ ABSL_GUARDED_BY(mutex_);
47 const std::string prefix_;
53 const absl::string_view prefix) {
58 std::make_shared<PrinterMessageCallbackImpl>(output_stream, prefix);
60 [=](
const std::vector<std::string>& messages) { impl->Call(messages); };
MessageCallback PrinterMessageCallback(std::ostream &output_stream, const absl::string_view prefix)
std::function< void(const std::vector< std::string > &)> MessageCallback