Fix IpcMessage::empty so skeleton stops reading args and server replies
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user