Пример #1
0
        public XFireClient(TcpClient tcpClient,
                           IXFireClientManager clientManager,
                           ILogger logger,
                           ITcpServer.OnReceiveHandler receiveHandler,
                           ITcpServer.OnDisconnectionHandler disconnectionHandler)
        {
            _receiveHandler       = receiveHandler;
            _disconnectionHandler = disconnectionHandler;

            _clientManager = clientManager;
            _lock          = new object();

            _tcpClient = tcpClient;
            _tcpClient.ReceiveTimeout = 300; // ms
            _connected = true;

            Logger = logger;

            // TODO: be able to use unique salts
            Salt      = "4dc383ea21bf4bca83ea5040cb10da62";
            SessionId = Guid.NewGuid();

            _clientWaitEvent = new AutoResetEvent(false);

            _lastReceivedFrom = DateTime.UtcNow;

            Logger.LogInformation($"Client connected {_tcpClient.Client.RemoteEndPoint} and assigned session id {SessionId}");

            ThreadPool.QueueUserWorkItem(ClientThreadWorker);
        }
Пример #2
0
        public PFireServer(IPFireDatabase pFireDatabase, IXFireClientManager xFireClientManager, ITcpServer server)
        {
            Database       = pFireDatabase;
            _clientManager = xFireClientManager;

            _server                  = server;
            _server.OnReceive       += HandleRequest;
            _server.OnConnection    += HandleNewConnection;
            _server.OnDisconnection += OnDisconnection;
        }
Пример #3
0
        public PFireServer(string baseDirectory, IPEndPoint endPoint = null)
        {
            Database = new PFireDatabase(baseDirectory);

            _clientManager = new XFileClientManager();

            _server                  = new TcpServer(endPoint ?? new IPEndPoint(IPAddress.Any, 25999), _clientManager);
            _server.OnReceive       += HandleRequest;
            _server.OnConnection    += HandleNewConnection;
            _server.OnDisconnection += OnDisconnection;
        }
Пример #4
0
 public TcpServer(TcpListener listener, IXFireClientManager clientManager, ILogger <TcpServer> logger)
 {
     _listener      = listener;
     _clientManager = clientManager;
     _logger        = logger;
 }
Пример #5
0
 public TcpServer(IPEndPoint endPoint, IXFireClientManager clientManager)
 {
     _listener      = new TcpListener(endPoint);
     _clientManager = clientManager;
 }