Send시에... 어떻게 하면 모든 Session에게 균등하게 Send기회를 줄 수 있을까.
wouldblock시에는 일단 다시 send를 해야 하고... packet의 sequence는 지켜져야 한다.
일단 생각해 본 건, session 별로 send queue를 가지고 있고... 보내야 할 packet이 생기면... buffer pool 에서 buffer를 가져와서 send queue에 푸쉬. 그리고 Sender에있는 Session Queue에 Session을 푸쉬.
Sender에서는 queue에서 팝 시키고, 여기서 두가지로 갈릴 것 같긴 한데... 가장 공평한 방법은 일단 이거겠지.
패킷 하나를 처리(send). wouldblock이거나 sendqueue에 보내야 할 패킷이 남아있을 경우, session queue에 다시 push.
이러면 session queue에 event가 있는 애들은 일단 패킷 하나씩 공평하게 보내지겠지. 근데 사실상... send가 늦어져서 누적이 되어버린다면... 정말 감당하기 힘들어 질 것 같은데...Sender에서도 push, Packet dispatcher에서도 push...이렇게 하다보면 겁내 빠박해질 것 같음.
쓰는동안 갑자기 드는 생각이... wouldblock패킷은 표시를 해 줘서 wouldblock일 때만 session queue에 push시키고, 아닐 경우엔.. 어쨌든 다음 패킷에 대해서는 worker에서 push했을 테니... 안넣어도 될 것 같다.
방법론에대해서는 조금 더 생각 해 봐야 할 것 같음. 춈 딱 아 이거다! 라는 방법이 있을 것 같은데....킁킁...






219861
12
62






댓글을 달아 주세요