Client Handler

This document contains Mermaid diagrams for the current ClientHandler implementation.

Add Client

flowchart TD; A[addClient ClientFD] --> B[Set Socket Non-blocking]; B --> C[Create Client Object]; C --> D[Insert Client to Map]; D --> E[Setup Epoll Event EPOLLIN,EPOLLET]; E --> F[Add FD to Epoll];

Process Clients

flowchart TD; A[processClients] --> B[Reset ProcessedClients = 0]; B --> C[epoll_wait for ready FDs]; C --> D{Error?}; D -->|Yes| E[Log error and return]; D -->|No| F{FDCount > 0?}; F -->|Yes| G[readClientData FDCount]; F -->|No| H[Return]; G --> H;

Read Client Data

flowchart TD; A[readClientData FDCount] --> B[Loop through ready FDs]; B --> C{More FDs?}; C -->|Yes| D[Read FD from epoll event]; D --> E{Client exists in map?}; E -->|No| C; E -->|Yes| F[Call Client.receiveData]; F --> G{Receive finished or hard error?}; G -->|Yes| H[Erase client from map]; H --> I[Close FD]; I --> C; G -->|No| C; C -->|No| J[Return];