PeerCastStation.Core.OutputListener.StartListen C# (CSharp) Method

StartListen() private method

private StartListen ( TcpListener server, CancellationToken cancel_token ) : Task
server TcpListener
cancel_token CancellationToken
return Task
    private Task StartListen(TcpListener server, CancellationToken cancel_token)
    {
      server.Start();
      return Task<Task>.Factory.StartNew(async () => {
        try {
          cancel_token.Register(() => {
            server.Stop();
          });
          while (!cancel_token.IsCancellationRequested) {
            var client = await server.AcceptTcpClientAsync();
            logger.Info("Client connected {0}", client.Client.RemoteEndPoint);
            var client_task = ConnectionHandler.HandleClient(
              client,
              GetAccessControlInfo(client.Client.RemoteEndPoint as IPEndPoint));
          }
        }
        catch (SocketException e) {
          if (!IsClosed) throw;
        }
        catch (ObjectDisposedException) {
        }
      }).Unwrap();
    }