readiness map

readiness는 “지금 시도 가능”이라는 신호일 뿐 메시지 완성이 아니다

이벤트가 왔다는 사실과 애플리케이션 frame이 완성됐다는 사실을 분리해야 한다.

신호
뜻하는 것
뜻하지 않는 것
Read ready
읽을 바이트나 EOF가 있음
메시지 1개가 완성됐다는 보장 아님
Write ready
송신 버퍼에 일부 쓸 수 있음
전체 payload가 즉시 전송된다는 뜻 아님
Hangup/Error
연결 종료나 reset 감지
원인 분류 없이 재시도하면 안 됨
Backpressure
output queue가 커짐
계속 읽어도 안전하다는 뜻 아님
관리 대상
봐야 하는 값
액션
input buffer
frame length, delimiter
모자라면 더 읽고 초과분은 보존
output queue
pending bytes, retry count
상한 초과 시 drop 또는 연결 종료
fd state
registered, closed
등록 해제와 close를 idempotent하게 처리