private void StopPlugin() { configForm?.Close(); configForm = null; server?.Stop(); server = null; revisionManager?.Stop(); revisionManager = null; }
private void InitialiseServer() { errors = PluginError.Initialising; try { server = new DAAP.Server(settings.serverName, db, revisionManager); server.Port = settings.serverPort; server.Collision += (o, args) => { if (server.Name.Length > settings.serverName.Length) { int next = int.Parse(server.Name.Substring(server.Name.Length + 1)) + 1; server.Name = settings.serverName + " " + next.ToString(); } else { server.Name += " 2"; } }; server.TrackRequested += OnTrackRequest; server.DatabaseRequested += OnDatabaseRequest; server.UserLogin += revisionManager.OnLogin; server.UserLogout += revisionManager.OnLogout; server.Start(); errors = PluginError.None; } catch (SocketException) { errors = PluginError.PortTaken; } catch (Mono.Zeroconf.Providers.Bonjour.ServiceErrorException) { errors = PluginError.BonjourNotFound; } catch (Exception) { // Fatal. StopPlugin(); mbApi.MB_SendNotification(CallbackType.DisablePlugin); } configForm?.SetMessages(errors); }