fCraft.PlayerDB.Save C# (CSharp) Method

Save() public static method

public static Save ( ) : void
return void
        public static void Save() {

            const string tempFileName = Paths.PlayerDBFileName + ".temp";

            lock( SaveLoadLocker ) {
                PlayerInfo[] listCopy = GetPlayerListCopy();
                Stopwatch sw = Stopwatch.StartNew();
                using( FileStream fs = new FileStream( tempFileName, FileMode.Create, FileAccess.Write, FileShare.None, 64 * 1024 ) ) {
                    using( StreamWriter writer = new StreamWriter( fs, System.Text.Encoding.ASCII, 64 * 1024 ) ) {
                        writer.WriteLine( "{0} {1} {2}", maxID, FormatVersion, Header );

                        for( int i = 0; i < listCopy.Length; i++ ) {
                            // TODO: Reuse StringBuilder after switching to 4.0
                            writer.WriteLine( listCopy[i].Serialize() );
                        }
                    }
                }
                sw.Stop();
                Logger.Log( "PlayerDB.Save: Saved player database ({0} records) in {1}ms", LogType.Debug,
                            Trie.Count, sw.ElapsedMilliseconds );

                try {
                    Paths.MoveOrReplace( tempFileName, Paths.PlayerDBFileName );
                } catch( Exception ex ) {
                    Logger.Log( "PlayerDB.Save: An error occured while trying to save PlayerDB: " + ex, LogType.Error );
                }
            }
        }

Usage Example

Example #1
0
        // Remove player from the list, and notify remaining players
        public void UnregisterPlayer(Player player)
        {
            if (player == null)
            {
                log.Log("World.UnregisterPlayer: Trying to unregister a non-existent (null) player.", LogType.Debug);
                return;
            }

            lock ( playerListLock ) {
                if (players[player.id] == player)
                {
                    log.Log("{0} left the server.", LogType.UserActivity, player.name);
                    db.ProcessLogout(player);
                    db.Save();
                    players[player.id] = null;
                    playerCount--;
                    SendToAll(PacketWriter.MakeRemoveEntity(player.id), null);
                    SendToAll(PacketWriter.MakeMessage(Color.Sys + player.name + " left the server."), null);
                    UpdatePlayerList();
                }
                else
                {
                    log.Log("World.UnregisterPlayer: Trying to unregister a non-existent (unknown id) player.", LogType.Warning);
                }
            }
        }
All Usage Examples Of fCraft.PlayerDB::Save