Skip to content

Day47 - Multi-message TX Queue & EPOLLOUT Pipeline

Summary

Implemented a multi-message TX queue for the non-blocking epoll TCP server.

What I Learned

  • A TX queue is needed because non-blocking send() may only send part of a message.
  • Each message requires its own offset.
  • front() must only peek; pop() should happen only after the message is fully sent.
  • client_destroy() must clear pending TX messages to avoid memory leaks.
  • EPOLLOUT should be disabled when TX queue becomes empty.
  • TCP does not preserve message boundaries.

Key Observation

Burst tests showed that multiple input lines may be received in one recv(), and one logical line may be split across multiple recv() calls.

Next Step

Implement RX buffer and protocol parser using newline-based framing.