X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FServerSocket.cpp;h=4c34212cb52b597f55e7793974392299abca0053;hb=5170489b983c08c8be8d878996710eb0f6db2679;hp=e36b071e3484630d764722380d32dc80afacea90;hpb=62ca7f3ae55ad2e0c395cb554d71afab87de1ee3;p=lyx.git diff --git a/src/ServerSocket.cpp b/src/ServerSocket.cpp index e36b071e34..4c34212cb5 100644 --- a/src/ServerSocket.cpp +++ b/src/ServerSocket.cpp @@ -28,7 +28,7 @@ #include "support/FileName.h" #include "support/socktools.h" -#include +#include "support/bind.h" #include #include @@ -40,7 +40,7 @@ using namespace std; using namespace lyx::support; -using boost::shared_ptr; + namespace lyx { @@ -64,7 +64,7 @@ ServerSocket::ServerSocket(FileName const & addr) theApp()->registerSocketCallback( fd_, - boost::bind(&ServerSocket::serverCallback, this) + bind(&ServerSocket::serverCallback, this) ); LYXERR(Debug::LYXSERVER, "lyx: New server socket " @@ -115,7 +115,7 @@ void ServerSocket::serverCallback() shared_ptr(new LyXDataSocket(client_fd)); theApp()->registerSocketCallback( client_fd, - boost::bind(&ServerSocket::dataCallback, + bind(&ServerSocket::dataCallback, this, client_fd) ); } @@ -125,8 +125,10 @@ void ServerSocket::serverCallback() // if the connection has been closed void ServerSocket::dataCallback(int fd) { - shared_ptr client = clients[fd]; - + map >::const_iterator it = clients.find(fd); + if (it == clients.end()) + return; + shared_ptr client = it->second; string line; size_t pos; bool saidbye = false; @@ -141,8 +143,10 @@ void ServerSocket::dataCallback(int fd) string const key = line.substr(0, pos); if (key == "LYXCMD") { string const cmd = line.substr(pos + 1); + FuncRequest fr(lyxaction.lookupFunc(cmd)); + fr.setOrigin(FuncRequest::LYXSERVER); DispatchResult dr; - theApp()->dispatch(lyxaction.lookupFunc(cmd), dr); + theApp()->dispatch(fr, dr); string const rval = to_utf8(dr.message()); if (dr.error()) client->writeln("ERROR:" + cmd + ':' + rval);