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

master
Сергей Маринкевич 2 months ago
parent c93aea6501
commit 00d359a064

@ -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;

Loading…
Cancel
Save