using namespace lyx::support;
-
namespace lyx {
// Address is the unix address for the socket.
// is OK and if the number of clients does not exceed MAX_CLIENTS
void ServerSocket::serverCallback()
{
+ if (clients.size() >= MAX_CLIENTS) {
+ writeln("BYE:Too many clients connected");
+ return;
+ }
+
int const client_fd = socktools::accept(fd_);
if (fd_ == -1) {
return;
}
- if (clients.size() >= MAX_CLIENTS) {
- writeln("BYE:Too many clients connected");
- return;
- }
-
// Register the new client.
clients[client_fd] =
shared_ptr<LyXDataSocket>(new LyXDataSocket(client_fd));
// if the connection has been closed
void ServerSocket::dataCallback(int fd)
{
- shared_ptr<LyXDataSocket> client = clients[fd];
-
+ map<int, shared_ptr<LyXDataSocket> >::const_iterator it = clients.find(fd);
+ if (it == clients.end())
+ return;
+ shared_ptr<LyXDataSocket> client = it->second;
string line;
- size_t pos;
bool saidbye = false;
while (!saidbye && client->readln(line)) {
// The protocol must be programmed here
// Split the key and the data
+ size_t pos;
if ((pos = line.find(':')) == string::npos) {
client->writeln("ERROR:" + line + ":malformed message");
continue;