5. Client Handler
The ClientHandler Component handles Client Sockets / Epoll Setup / Data Buffering.
5.1. Program Logic
5.1.1. Add Client
Called from Main::Server on new Client Socket.
Insert ClientObject with ClientFD as Key into internal C++ Map
Add ClientFD to Kernel Epoll
Workflow diagram see: 15. Graphical Workflows Section 1.2.1.
5.1.2. Process Clients
Get all Epoll FDs with waiting data.
Note
If 5000 current Clients are connected and 2000 have waiting buffered data, we get an
Array of these 2000 Filedescriptor integers.
Process all Filedescriptors calling readClientData().
Workflow diagram see: 15. Graphical Workflows Section 1.2.2.
5.1.3. Read Client Data
Process all Filedescriptors with waiting data.
Close connection when connection-close (0 Bytes received) on Socket Level
If Filedesriptor in Client Map found, append received data to Client Objects Buffer
Parse Request Basic Data, if non-fragmented add to SHM buffer
If Clients with data exist, release SHM StaticFS Lock to process
Workflow diagram see: 15. Graphical Workflows Section 1.2.3.