示例#1
0
        public void AddListener <TRequest, TResponse>(
            IPEndPoint endpoint,
            IRequestResponserFactory <TRequest, TResponse> requestResponserFactory)
        {
            var listener = new Listener <TRequest, TResponse>(
                endpoint,
                requestResponserFactory,
                tokenSource.Token);

            listener.StartListening();

            listeners.Add(listener);
        }
示例#2
0
        public Listener(
            IPEndPoint endpoint,
            IRequestResponserFactory <TRequest, TResponse> requestResponserFactory,
            CancellationToken cancellationToken)
        {
            this.endpoint = endpoint;
            this.requestResponserFactory = requestResponserFactory;
            this.cancellationToken       = cancellationToken;

            listener = new TcpListener(this.endpoint);

            // 1. クライアントからの接続を待つ
            listener.Start();

            // 終了処理を予約しておく
            cancellationToken.Register(() =>
            {
                _litenerTask?.Wait();

                listener.Stop();
            });
        }