view daemon/AcceptThread.cs @ 62:12b7528000da

fix Thread to Task
author riono <e165729@ie.u-ryukyu.ac.jp>
date Sat, 29 Jan 2022 15:08:13 +0900
parents dc3f59937772
children 058d41dcec41
line wrap: on
line source

using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using Christie_net.codegear;

namespace Christie_net.daemon {
public class AcceptThread {
    private TcpListener listener;
    public int counter = 0;
    public CodeGearManager cgm;

    public AcceptThread(TcpListener listener, CodeGearManager cgm) {
        this.listener = listener;
        this.cgm = cgm;
    }

    public void Run() {
        try {
            TcpClient client = null;
            client = listener.AcceptTcpClient();
            client.NoDelay = true;

            IPEndPoint endPoint = (IPEndPoint) client.Client.RemoteEndPoint;
            IPAddress ipAddress = endPoint.Address;
            IPHostEntry hostEntry = Dns.GetHostEntry(ipAddress);
            Console.WriteLine("Accept " + hostEntry.HostName + ":" + endPoint.Port);

            Connection connection = new Connection(client.Client, cgm);
            Console.WriteLine("connection:" + connection.GetInfoString());
            string key = "accept" + counter;

            IncomingTcpConnection incoming = new IncomingTcpConnection(connection);
            Task.Factory.StartNew(() => incoming.Run());

            cgm.SetAccept(key, incoming);

            OutboundTcpConnection outbound = new OutboundTcpConnection(connection);
            Task.Factory.StartNew(() => outbound.Run());
            counter++;
        } catch (Exception e) {
            Console.WriteLine(e.StackTrace);
        }
    }
}
}