void ServerBase::clientEvent(ClientBase* client, GameEvent* event) { unique_lock<mutex> lock(_lock); auto playerIDItr = _assignedIDs.reverseFind(client); if(playerIDItr == _assignedIDs.reverseEnd()) { if(event->type == AssignName) { Info("Attempting to assign name to client"); AssignNameEvent* e = (AssignNameEvent*)event; lock.unlock(); if(!assignClient(client, e->name)) { Error("Failed to assign client to name " << e->name); } else { Info("Accepted client " << e->name); } return; } else { Error("Unassigned client attempting to send data to the server"); return; } } PlayerID playerID = playerIDItr->second; auto clientNameItr = _assignedClients.reverseFind(client); if(clientNameItr == _assignedClients.reverseEnd()) { return; } string clientName = clientNameItr->second; Debug("Received client event from " << clientName << " (ID " << playerID << ")"); EventMap<PlayerID> results; _core->processPlayerEvent(playerID, event, results); sendEvents(results); }
void continueAfterClientCreation0(RTSPClient* newRTSPClient) { if (newRTSPClient == 0) return; assignClient(ourClient = newRTSPClient); streamURL = newRTSPClient->url(); // Having handled one "REGISTER" command (giving us a "rtsp://" URL to stream from), we don't handle any more: Medium::close(handlerServerForREGISTERCommand); handlerServerForREGISTERCommand = NULL; continueAfterClientCreation1(); }