20250619 개발 일지. 프로토버프 제로카피 게시글 읽기 및 뷰매니저 작성
# google protobuf Zero-Copy
커스텀 직렬화 사용하여 샌드 작업 시
데이터 컨테이너 객체 -> 바이트 배열 -> 샌드 메소드 요청 -> 커널 버퍼에 복사 -> 완료
직렬화된 바이트 배열 데이터 -> 샌드 메소드 요청 -> 커널 버퍼에 복사 -> 완료
이런 식으로 직렬화에 사용되는 데이터 카피를 없애서 성능 향상
# RoomManager 로비 유저 관리
HashSet으로 따로 관리 vs roomId를 0으로 하여 일반 채팅 방과 동일하게 관리
hashset
유저 리스트 요청 시 세션매니저에서 userid로 인포를 가져오는 추가 작업 필요
왜 hashset으로 했지? -> 로비는 로그인 유저 또는 채팅 방 들어갔다 나오는 유저들이 많아 리스트같이 유저 찾기가 o(n)인 경우는 적절치 않다고 생각
# 종료 시 룸 나감 처리 필요
로비 입장 시 로비 유저들에게 브로드캐스트로 유저 입장 패킷 전송 필요
# 메모
S_EnterRoom -> 내가 어떤 방에 들어갔을때
S_EnterUser -> 누군가 방에 들어갔을 때. 로비에서 방 목록 갱신, 방에서 유저 갱신(방에 있을 때는 방 목록의 유저들 변화에 대한 갱신을 안함).
# 일지
뷰매니저를 통해 유저 리스트, 방 목록 등을 추가하는 작업 진행.
패킷을 받고 현재 유저 상태(로비, 방 등)로 표시하는 곳을 다르게 했는데 만약 패킷 받기 전 상태가 바뀐다면(방 퇴장 등) 로비에서 이전 방 유저가 보이는 등 문제가 발생할 수 있겠다는 생각이 듦
해결하기 위해서 생각나는 방법은 패킷에 어디를 수정할 것인지 패킷 멤버를 추가, 로비와 방 따로 패킷 만들기