Fix IpcMessage::empty so skeleton stops reading args and server replies

This commit is contained in:
Сергей Маринкевич
2025-12-03 17:42:51 +07:00
parent c93aea6501
commit 00d359a064
+14 -3
View File
@@ -39,16 +39,27 @@ public:
}
bool empty() const {
// Для входящих сообщений считаем "пустым" то, у которого
// больше не осталось непрочитанных данных во входном потоке.
//
// Для свежесозданного сообщения (ещё не инициализирован in_)
// поведение остаётся прежним: пусто == raw_.empty().
if (!in_initialized_) {
return raw_.empty();
}
// Если поток уже инициализирован, смотрим, остались ли данные.
// peek() вернёт EOF, когда всё прочитано.
return in_.peek() == EOF;
}
private:
std::string raw_;
std::ostringstream out_;
std::istringstream in_;
bool in_initialized_{false};
mutable std::istringstream in_;
mutable bool in_initialized_{false};
void ensureInput() {
void ensureInput() const {
if (!in_initialized_) {
in_.str(raw_);
in_initialized_ = true;