internal WaitHandle CloseFileStreams(TorrentManager manager) { ManualResetEvent handle = new ManualResetEvent(false); IOLoop.Queue(delegate { // Process all pending reads/writes then close any open streams try { LoopTask(); if (manager.HasMetadata) { writer.Close(manager.Torrent.Files); } } catch (Exception ex) { Logger.Log(null, "Close file streams error: {0}", ex.Message); SetError(manager, Reason.WriteFailure, ex); } finally { handle.Set(); } }); return(handle); }
public Server() { Log("Starting Server"); s = this; consolePlayer = new ConsolePlayer(s); consolePlayer.SetUsername(ConsoleName); //Group.DefaultGroup = new DefaultGroup(); //debugging mainlevel = new World(0, 127, 0, "main", new Random().Next()); World.worlds.Add(mainlevel); ml = new MainLoop("server"); #region updatetimer ml.Queue(delegate { updateTimer.Elapsed += delegate { Player.GlobalUpdate(); }; updateTimer.Start(); }); #endregion //TODO AI Update Timer //Setup(); Log("Server Started"); //new Creeper(new Point3(0, 0, 0), mainlevel); }
void DhtEngineStateChanged(object o, EventArgs e) { if (dhtEngine.State != DhtState.Ready) { return; } MainLoop.Queue(delegate { foreach (TorrentManager manager in torrents) { if (!manager.CanUseDht) { continue; } dhtEngine.Announce(manager.InfoHash, Listener.Endpoint.Port); dhtEngine.GetPeers(manager.InfoHash); } }); }
public Server() { Log("Starting Server"); s = this; mainlevel = new World(0, 127, 0, "main"); World.worlds.Add(mainlevel); ml = new MainLoop("server"); #region updatetimer ml.Queue(delegate { updateTimer.Elapsed += delegate { Player.GlobalUpdate(); }; updateTimer.Start(); }); #endregion Setup(); Log("Server Started"); }
public Server() { Log("Starting Server"); s = this; if (Directory.Exists("main")) { mainlevel = World.LoadLVL("main"); } else { mainlevel = new World(0, 127, 0, "main", 0) { ChunkLimit = 4 }; World.worlds.Add(mainlevel); } //changed to seed 0 for now ml = new MainLoop("server"); #region updatetimer ml.Queue(delegate { updateTimer.Elapsed += delegate { Player.GlobalUpdate(); }; updateTimer.Start(); }); ml.Queue(delegate { playerlisttimer.Elapsed += delegate { Player.PlayerlistUpdate(); }; playerlisttimer.Start(); }); #endregion //TODO AI Update Timer //Setup(); //new Creeper(new Point3(0, 72, 0), mainlevel); }