void CVarManager::saveUser() { if (m_uiUserId == UINT_MAX) return; try { sqlite3x::sqlite3_connection db(m_szCVarDb.c_str()); { sqlite3x::sqlite3_command cmd(db,"DELETE FROM cvaruser where user=?;"); cmd.bind(1, (int)m_uiUserId); cmd.executenonquery(); } sqlite3x::sqlite3_transaction trans(db); { sqlite3x::sqlite3_command cmd(db, "INSERT INTO cvaruser (name, value, user) VALUES (?,?,?);"); cmd.bind(3, (int)m_uiUserId); saveToDb(cmd, CFLAG_USER); } trans.commit(); } catch (std::exception &e) { Warning(gcString("Failed to save cvar user: {0}\n", e.what())); } }
void ImageCache::updateImagePath(const char* path, uint32 hash) { m_ImgMutex.lock(); m_mImageMap[hash] = path; m_vUpdateList.push_back(hash); if (m_LastUpdateTime < time(nullptr)) saveToDb(); m_ImgMutex.unlock(); }
void SqlPlaylist::removeTrack( int position ) { if( !m_tracksLoaded ) loadTracks(); if( position < 0 || position >= m_tracks.size() ) return; Meta::TrackPtr track = m_tracks.takeAt( position ); unsubscribeFrom( track ); saveToDb( true ); notifyObserversTrackRemoved( position ); }
void SqlPlaylist::addTrack( Meta::TrackPtr track, int position ) { if( !m_tracksLoaded ) loadTracks(); if( position < 0 ) position = m_tracks.count(); else position = qMin( position, m_tracks.count() ); subscribeTo( track ); //keep track of metadata changes. m_tracks.insert( position, track ); saveToDb( true ); notifyObserversTrackAdded( track, position ); }
bool ReportWindow::save() { bool res = FALSE; // do we have a valid filename? if(lastSaveToDb == FALSE) { if(!filename.isEmpty()) { QFile * file = new QFile(filename); res = save(file); delete file; } else { res = saveAs(); } } else { // do a save to the database. res = saveToDb(); } return res; }
void CVarManager::saveNormal() { try { sqlite3x::sqlite3_connection db(m_szCVarDb.c_str()); db.executenonquery("DELETE FROM cvar;"); sqlite3x::sqlite3_command cmd(db, "INSERT INTO cvar (name, value) VALUES (?,?);"); sqlite3x::sqlite3_transaction trans(db); saveToDb(cmd, CFLAG_NOFLAGS); trans.commit(); } catch (std::exception &e) { Warning(gcString("Failed to save cvar normal: {0}\n", e.what())); } }
void SqlPlaylist::metadataChanged( Meta::TrackPtr track ) { //TODO: do we really need to observe track changes? Metadata will be properly saved //on exit and proxy tracks are loaded with uidUrl. So at worse the save metadata in //playlist_tracks will be outdated until real track is loaded. if( !m_tracksLoaded ) loadTracks(); //When AFT detects a moved file it will update the track and make it signal it's observers. if( !m_tracks.contains( track ) ) { error() << "Got a metadataChanged for a track that is not in the playlist."; return; } //force update of tracks in database saveToDb(); }
void CVarManager::saveWinUser() { try { sqlite3x::sqlite3_connection db(m_szCVarDb.c_str()); { sqlite3x::sqlite3_command cmd(db,"DELETE FROM cvarwin where user=?;"); cmd.bind(1, getWinUser()); cmd.executenonquery(); } sqlite3x::sqlite3_command cmd(db, "INSERT INTO cvarwin (name, value, user) VALUES (?,?,?);"); cmd.bind(3, getWinUser()); sqlite3x::sqlite3_transaction trans(db); saveToDb(cmd, CFLAG_WINUSER); trans.commit(); } catch (std::exception &e) { Warning(gcString("Failed to save cvar win user: {0}\n", e.what())); } }
void Server::runGame() { std::cout<<"Start Game service"<<std::endl; loadFromDb(); while(!stop) { sf::Lock guard(_clientMutex); //for all clients for(auto it = _clients.begin(); it != _clients.end();++it) { Client* client = *it; packet::NetworkEvent* msg; while(client and client->pollEvent(msg)) { std::cout<<"Client "<<client->id()<<" recive data of type : "<<msg->type()<<std::endl; switch(msg->type()) { case FuncIds::IdGetListGame : { sf::Packet response; packet::SetListGame list; sf::Lock guard(_gameMutex); for(auto game : _games) { list.add(game->id(),game->getPlayersCount(),game->getTeamCount()); } response<<list; client->send(response); }break; case FuncIds::IdCreateGame : { sf::Packet response; packet::SetListGame list; sf::Lock guard(_gameMutex); _games.emplace_back(new Game("./media/map.json")); _games.back()->load(true); for(auto game : _games) { list.add(game->id(),game->getPlayersCount(),game->getTeamCount()); } _games.back()->onLogOut = onLogOut; _games.back()->run(); response<<list; //send new game to all clients for(auto it2 = _clients.begin(); it2 != _clients.end();++it2) (*it2)->send(response); }break; case FuncIds::IdJoinGame : { int gameId = static_cast<packet::JoinGame*>(msg)->gameId(); sf::Lock guard(_gameMutex); for(auto game : _games) { if(game->id() == gameId) { if(game->addClient(client)) { client = nullptr; it = _clients.erase(it); --it; } break; } } }break; case FuncIds::IdDisconnected : { it = _clients.erase(it); --it; client = nullptr; }break; default : break; } delete msg; } } } std::cout<<"Stop Game service"<<std::endl; { sf::Lock guard(_gameMutex); for(auto& game : _games) { std::cout<<"Stop Game "<<game->id()<<std::endl; game->stop(); game->wait(); } saveToDb(); } }
void SqlPlaylist::setName( const QString &name ) { m_name = name; saveToDb( false ); //no need to resave all tracks }