From 1c72ddd91fe1076fc31bf137327cd8b6e370085f Mon Sep 17 00:00:00 2001 From: Angus Leeming Date: Thu, 6 Feb 2003 01:18:36 +0000 Subject: [PATCH] Backout my lyxserver changes git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6038 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/ChangeLog | 12 +++++++++--- src/lyxserver.C | 52 +++++++++++++++++++++++++------------------------ 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 1c0357744d..509ed76d57 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2003-02-05 Angus Leeming + + * lyxserver.C (read_ready): revert my patch of 11 September last year + as it sends PC cpu through the roof. Presumably this means that + the lyxserver will no longer run on an Alpha... + 2003-01-30 Angus Leeming * factory.C (createInset): create an InsetCommandParam of type "index" @@ -9,7 +15,7 @@ 2003-01-28 Jean-Marc Lasgouttes * lyxfunc.C (getStatus): "buffer-export custom" should never be - disabled. + disabled. 2003-01-20 Michael Schmitt @@ -24,10 +30,10 @@ in "View" menu * buffer.C (parseSingleLyXformat2Token): Fix misleading error - message + message * lyxfunc.C (getStatus): Make sure that formats other than - "fax" can also be disabled + "fax" can also be disabled 2003-01-16 Jean-Marc Lasgouttes diff --git a/src/lyxserver.C b/src/lyxserver.C index 26d11f542d..edbbd2efc8 100644 --- a/src/lyxserver.C +++ b/src/lyxserver.C @@ -272,38 +272,40 @@ void LyXComm::read_ready() if (status > 0) { charbuf[status] = '\0'; // turn it into a c string read_buffer_ += rtrim(charbuf, "\r"); - - } else if (errno != EAGAIN) { + // commit any commands read + while (read_buffer_.find('\n') != string::npos) { + // split() grabs the entire string if + // the delim /wasn't/ found. ?:-P + string cmd; + read_buffer_= split(read_buffer_, cmd,'\n'); + lyxerr[Debug::LYXSERVER] + << "LyXComm: status:" << status + << ", read_buffer_:" << read_buffer_ + << ", cmd:" << cmd << endl; + if (!cmd.empty()) + clientcb(client, cmd); + //\n or not \n? + } + } + if (errno == EAGAIN) { + errno = 0; + return; + } + if (errno != 0) { + lyxerr << "LyXComm: " << strerror(errno) << endl; if (!read_buffer_.empty()) { lyxerr << "LyXComm: truncated command: " - << read_buffer_ << '\n' - << "Resetting connection" << endl; + << read_buffer_ << endl; read_buffer_.erase(); } - - // reset connection - closeConnection(); - openConnection(); - break; - - } else { - // errno == EAGAIN - // Nothing new has arrived, so now's the time - // to tell the outside world if there's anything - // in the read buffer. - break; + break; // reset connection } } - if (!read_buffer_.empty()) { - read_buffer_ = rtrim(read_buffer_, "\n"); - lyxerr[Debug::LYXSERVER] - << "LyXComm: Received from fd " - << infd << '\n' - << '\"' << read_buffer_ << '\"' << endl; - clientcb(client, read_buffer_); - } - + // The connection gets reset in errno != EAGAIN + // Why does it need to be reset if errno == 0? + closeConnection(); + openConnection(); errno = 0; }