PeerCastStation.ChannelCleaner.CleanupChannels C# (CSharp) Method

CleanupChannels() private method

private CleanupChannels ( bool>.Func predicate ) : void
predicate bool>.Func
return void
    private void CleanupChannels(Func<Channel, bool> predicate)
    {
      if (inactiveLimit<1) return;
      var channels = peerCast.Channels;
      foreach (var channel in channels) {
        if (channel.IsBroadcasting) continue;
        if (predicate(channel)) {
          int time;
          if (inactiveChannels.TryGetValue(channel, out time)) {
            if (Environment.TickCount-time>inactiveLimit) {
              peerCast.CloseChannel(channel);
              inactiveChannels.Remove(channel);
            }
          }
          else {
            inactiveChannels.Add(channel, Environment.TickCount);
          }
        }
        else {
          inactiveChannels.Remove(channel);
        }
      }
      foreach (var channel in inactiveChannels.Keys.ToArray()) {
        if (!channels.Contains(channel)) {
          inactiveChannels.Remove(channel);
        }
      }
    }