コード例 #1
0
        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}");
            }
        }
コード例 #2
0
 /// <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();
     }
 }
コード例 #3
0
        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( );
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 private void OnOffline(ServerStatusChangedEventArgs args)
 {
     Logger.Warn(args);
     WatcherService.Restart(args.Port);
 }
コード例 #6
0
 private void OnOnline(ServerStatusChangedEventArgs args)
 {
     Logger.Info(args);
 }