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