Exemple #1
0
        public void doWork()
        {
            int bufferSize = binReader.ReadInt32();

            receiveBuffer = binReader.ReadBytes(bufferSize);

            log.LogMessage("Request recibida, comenzando procesado.");

            RequestProcessor requestProcessor = new RequestProcessor(receiveBuffer);

            CheckTypeOfRequestAndProcess(requestProcessor.GetTypeOfRequest(), requestProcessor.GetBodyOfRequest());
        }
        /// <summary>
        /// Método para aceptar clientes en hilos trabajadores y procesar peticiones
        /// </summary>
        /// <param name="tcpListener">listener que aceptará los clientes</param>
        public void AcceptClients(TcpListener tcpListener)
        {
            while (true)
            {
                TcpClient tcpClient = tcpListener.AcceptTcpClient();

                ClientWorker clientWorker = new ClientWorker(tcpClient);
                log.LogMessage("Client accepted.");


                listClients.Add(clientWorker);
                // Recorro la lista de clientes para comprobar si alguno ya ha acabado de procesar la petición
                // Si ya se ha procesado la petición, ya ha acabado, se quita de la lista de control
                for (int i = 0; i < listClients.Count; i++)
                {
                    if (!listClients[i]._t.IsAlive)
                    {
                        listClients.RemoveAt(i);
                        i--;
                        log.LogMessage("Client has finished and was deleted.");
                    }
                }
            }
        }