Exemplo n.º 1
0
void Server::AddClientProc()
{

    pthread_mutex_lock(&clients.mutex);
    pthread_mutex_lock(&clientsState.mutex);
    {
        if(!clientsState.addList.empty())
        {

            std::cout << "Server::AddClient(); add list - NOT empty!" << std::endl;

            //добавляем клиентов
            Client* c = (Client*)clientsState.addList.front();

            int index = clients.AddClient( c->GetFd(), c );

            if(index < 0)
                delete c;
            else
            {
                c->SetID(index);
                c->AttachClientChStateList(&clientsState);
                c->SetCurrentDir((FSDir*)fs);
                c->Run();
            }

            clientsState.addList.pop();
        }

    }
    pthread_mutex_unlock(&clientsState.mutex);
    pthread_mutex_unlock(&clients.mutex);

}