i am an idiot
This commit is contained in:
24
main.cpp
24
main.cpp
@ -106,10 +106,10 @@ void acceptThreadFunction( TCPServerSocket* servSock, std::vector<ClientHandler
|
|||||||
clients->push_back(ClientHandler(newSock)); // Wait for a client to connect
|
clients->push_back(ClientHandler(newSock)); // Wait for a client to connect
|
||||||
struct epoll_event ev;
|
struct epoll_event ev;
|
||||||
ev.events = EPOLLIN;
|
ev.events = EPOLLIN;
|
||||||
ev.data.fd = clients->size()-1;
|
ev.data.fd = newSock->getFD();
|
||||||
clientsMutex->unlock();
|
clientsMutex->unlock();
|
||||||
epoll_ctl(pollQue, EPOLL_CTL_ADD, newSock->getFD(), &ev);
|
epoll_ctl(pollQue, EPOLL_CTL_ADD, newSock->getFD(), &ev);
|
||||||
char welcomeMesg[] = "UVOS serial multiplexer " VERSION "\n";
|
char welcomeMesg[] = "UVOS serial multiplexer " VERSION "\n";
|
||||||
clients->back().write(welcomeMesg, sizeof(welcomeMesg)-1);
|
clients->back().write(welcomeMesg, sizeof(welcomeMesg)-1);
|
||||||
std::cout<<"got client\n";
|
std::cout<<"got client\n";
|
||||||
}
|
}
|
||||||
@ -205,21 +205,19 @@ int main(int argc, char* argv[])
|
|||||||
{
|
{
|
||||||
if(ev.data.fd != -1)
|
if(ev.data.fd != -1)
|
||||||
{
|
{
|
||||||
clientsMutex.lock();
|
std::vector<ClientHandler>::iterator client =
|
||||||
int i = ev.data.fd;
|
std::find(clients.begin(), clients.end(), ev.data.fd);
|
||||||
if(abs(i) >= clients.size())
|
if(client == clients.end())
|
||||||
{
|
|
||||||
clientsMutex.unlock();
|
|
||||||
continue;
|
continue;
|
||||||
}
|
clientsMutex.lock();
|
||||||
std::cout<<"client poll\n";
|
std::cout<<"client poll\n";
|
||||||
if(ev.events & EPOLLIN)
|
if(ev.events & EPOLLIN)
|
||||||
clients[i].run(&clients, serial, config.verbose);
|
client->run(&clients, serial, config.verbose);
|
||||||
if((ev.events & (EPOLLHUP | EPOLLERR)) || clients[i].isDisconnected())
|
if((ev.events & (EPOLLHUP | EPOLLERR)) || client->isDisconnected())
|
||||||
{
|
{
|
||||||
clients[i].cleanUp();
|
client->cleanUp();
|
||||||
clients.erase(clients.begin()+i);
|
clients.erase(client);
|
||||||
std::cout<<"client "<<i<<" disconnected\n";
|
std::cout<<"client disconnected\n";
|
||||||
}
|
}
|
||||||
clientsMutex.unlock();
|
clientsMutex.unlock();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user