private void OnUpdated(ServerStatusChangedEventArgs args) { Logger.Debug(args); if (args.ServerInfo.Status.MapName != args.OldServerInfo.Status.MapName) { Logger.Info( $"{args.Port} {args.ServerInfo.Status.SvHostname} changed map to {args.ServerInfo.Status.MapName}"); } }
/// <summary> /// Called when the status of a watched server changes. /// </summary> /// <param name="sender"> /// <see cref="IServerWatcher" /> /// </param> /// <param name="e"> /// <see cref="ServerStatusChangedEventArgs" /> /// </param> private void ServerWatcherServerStatusChanged(object sender, ServerStatusChangedEventArgs e) { if (!Dispatcher.CurrentDispatcher.CheckAccess()) { Delegate del = new Action(() => this.ServerWatcherServerStatusChanged(sender, e)); Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, del); } else { this.Servers.FirstOrDefault(serverEnty => serverEnty.ServerState == e.ChangedStatus)?.UpdateFromState(); } }
public void OnChange(ServerStatusChangedEventArgs args) { var old = ServerInfo; ServerInfo = args.ServerInfo; var isOffline = args.Type == ServerEventType.Offline; var info = isOffline ? old : args.ServerInfo; EventType = args.Type; var builder = GetBuilder(info, isOffline); Embed = builder.Build( ); }
private void OnServerStatusChange(ServerStatusChangedEventArgs args) { if (!embeds.TryGetValue(args.Port, out var embedInfo)) { embedInfo = new ServerEmbedInfo(Config, Resources, args.Port, "Unknown"); Interlocked.Exchange(ref embeds, embeds.SetItem(args.Port, embedInfo)); } if (args.Type == ServerEventType.Updated && args.ServerInfo.Players.Count == args.OldServerInfo.Players.Count && args.ServerInfo.Status.GameType == args.OldServerInfo.Status.GameType && args.ServerInfo.Status.MapName == args.OldServerInfo.Status.MapName) { return; } embedInfo.OnChange(args); subject.OnNext(embedInfo); }
private void OnOffline(ServerStatusChangedEventArgs args) { Logger.Warn(args); WatcherService.Restart(args.Port); }
private void OnOnline(ServerStatusChangedEventArgs args) { Logger.Info(args); }