// Address is the unix address for the socket.
// MAX_CLIENTS is the maximum number of clients
// that can connect at the same time.
-LyXServerSocket::LyXServerSocket(LyXFunc * f, string const & addr)
+LyXServerSocket::LyXServerSocket(LyXFunc * f, support::FileName const & addr)
: func(f),
fd_(support::socktools::listen(addr, 3)),
address_(addr)
// Needed by xdvi
support::setEnv("XEDITOR", "lyxclient -g %f %l");
// Needed by lyxclient
- support::setEnv("LYXSOCKET", address_);
+ support::setEnv("LYXSOCKET", address_.toFilesystemEncoding());
- theApp->registerSocketCallback(
+ theApp()->registerSocketCallback(
fd_,
boost::bind(&LyXServerSocket::serverCallback, this)
);
- lyxerr[Debug::LYXSERVER] << "lyx: New server socket "
- << fd_ << ' ' << address_ << endl;
+ LYXERR(Debug::LYXSERVER) << "lyx: New server socket "
+ << fd_ << ' ' << address_.absFilename() << endl;
}
LyXServerSocket::~LyXServerSocket()
{
if (fd_ != -1) {
- BOOST_ASSERT (theApp);
- theApp->unregisterSocketCallback(fd_);
+ BOOST_ASSERT (theApp());
+ theApp()->unregisterSocketCallback(fd_);
if (::close(fd_) != 0)
lyxerr << "lyx: Server socket " << fd_
<< " IO error on closing: " << strerror(errno);
}
- support::unlink(support::FileName(address_));
- lyxerr[Debug::LYXSERVER] << "lyx: Server socket quitting" << endl;
+ support::unlink(address_);
+ LYXERR(Debug::LYXSERVER) << "lyx: Server socket quitting" << endl;
}
-string const & LyXServerSocket::address() const
+string const LyXServerSocket::address() const
{
- return address_;
+ return address_.absFilename();
}
int const client_fd = support::socktools::accept(fd_);
if (fd_ == -1) {
- lyxerr[Debug::LYXSERVER] << "lyx: Failed to accept new client"
+ LYXERR(Debug::LYXSERVER) << "lyx: Failed to accept new client"
<< endl;
return;
}
// Register the new client.
clients[client_fd] =
shared_ptr<LyXDataSocket>(new LyXDataSocket(client_fd));
- theApp->registerSocketCallback(
+ theApp()->registerSocketCallback(
client_fd,
boost::bind(&LyXServerSocket::dataCallback,
this, client_fd)
// void LyXServerSocket::dump() const
// {
// lyxerr << "LyXServerSocket debug dump.\n"
-// << "fd = " << fd_ << ", address = " << address_ << ".\n"
+// << "fd = " << fd_ << ", address = " << address_.absFilename() << ".\n"
// << "Clients: " << clients.size() << ".\n";
// std::map<int, shared_ptr<LyXDataSocket> >::const_iterator client = clients.begin();
// std::map<int, shared_ptr<LyXDataSocket> >::const_iterator end = clients.end();
LyXDataSocket::LyXDataSocket(int fd)
: fd_(fd), connected_(true)
{
- lyxerr[Debug::LYXSERVER] << "lyx: New data socket " << fd_ << endl;
+ LYXERR(Debug::LYXSERVER) << "lyx: New data socket " << fd_ << endl;
}
lyxerr << "lyx: Data socket " << fd_
<< " IO error on closing: " << strerror(errno);
- theApp->unregisterSocketCallback(fd_);
- lyxerr[Debug::LYXSERVER] << "lyx: Data socket " << fd_ << " quitting."
+ theApp()->unregisterSocketCallback(fd_);
+ LYXERR(Debug::LYXSERVER) << "lyx: Data socket " << fd_ << " quitting."
<< endl;
}
// Error conditions. The buffer must still be
// processed for lines read
if (count == 0) { // EOF -- connection closed
- lyxerr[Debug::LYXSERVER] << "lyx: Data socket " << fd_
+ LYXERR(Debug::LYXSERVER) << "lyx: Data socket " << fd_
<< ": connection closed." << endl;
connected_ = false;
} else if ((count == -1) && (errno != EAGAIN)) { // IO error
// Cut a line from buffer
string::size_type pos = buffer_.find('\n');
if (pos == string::npos) {
- lyxerr[Debug::LYXSERVER] << "lyx: Data socket " << fd_
+ LYXERR(Debug::LYXSERVER) << "lyx: Data socket " << fd_
<< ": line not completed." << endl;
return false; // No complete line stored
}