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 { bool empty() const {
return raw_.empty(); // Для входящих сообщений считаем "пустым" то, у которого
// больше не осталось непрочитанных данных во входном потоке.
//
// Для свежесозданного сообщения (ещё не инициализирован in_)
// поведение остаётся прежним: пусто == raw_.empty().
if (!in_initialized_) {
return raw_.empty();
}
// Если поток уже инициализирован, смотрим, остались ли данные.
// peek() вернёт EOF, когда всё прочитано.
return in_.peek() == EOF;
} }
private: private:
std::string raw_; std::string raw_;
std::ostringstream out_; std::ostringstream out_;
std::istringstream in_; mutable std::istringstream in_;
bool in_initialized_{false}; mutable bool in_initialized_{false};
void ensureInput() { void ensureInput() const {
if (!in_initialized_) { if (!in_initialized_) {
in_.str(raw_); in_.str(raw_);
in_initialized_ = true; in_initialized_ = true;

Loading…
Cancel
Save