20 #include "absl/strings/string_view.h"
21 #include "absl/types/optional.h"
22 #include "ortools/math_opt/callback.pb.h"
28 const absl::string_view
message) {
29 CallbackDataProto data;
32 absl::string_view remainder =
message;
33 for (std::size_t end = 0; end = remainder.find(
'\n'), end != remainder.npos;
34 remainder = remainder.substr(end + 1)) {
35 const auto line = remainder.substr(0, end);
36 if (!unfinished_line_.empty()) {
37 std::string& new_message = *data.add_messages();
38 new_message = std::move(unfinished_line_);
39 unfinished_line_.clear();
42 data.add_messages(std::string(line));
49 unfinished_line_ += remainder;
52 if (data.messages().empty()) {
57 data.set_event(CALLBACK_EVENT_MESSAGE);
63 if (unfinished_line_.empty()) {
67 CallbackDataProto data;
68 data.set_event(CALLBACK_EVENT_MESSAGE);
69 *data.add_messages() = std::move(unfinished_line_);
70 unfinished_line_.clear();
absl::optional< CallbackDataProto > Parse(absl::string_view message)
absl::optional< CallbackDataProto > Flush()
Collection of objects used to extend the Constraint Solver library.