본문 바로가기
학습 노트/개인학습

250609 월요일 @ 43일차

by 삼색먕 2025. 6. 10.

 

✅C# DummyClient 수동 조작으로 Character 생성 까지 만들어보기

재구성을 어떻게 할지 생각해보다가
이전회사에서도 DB쪽은 SP수에 따라
클래스를 전부 헤더포함 해준것이 생각이나서 큰문제는 없을것 같아서 그냥진행해야겠다.

하지만 뭔가 이리저리 상속에 넘기는 부분이 많아서 그런지 연결처리를 하는부분의 작업속도가 꽤 오래걸린다.
우선 작업을 진행은 계속 해보는데, 개선은 필요할것같다고 느낀다.

우선 캐릭터를 생성하는데 까지는 로직을 완성했다.

DB프로시저에서 캐릭터를 생성할때
트랜젝션을 묶어서 
Nickname중복체크,
Character Uid발급,
닉네임 등록을 먼저해주고
다성공시 커밋 중간에 실패시 롤백처리 하였다.

프로시저 반환값 CharUid + ResultValue값을 확인하여
Charcater테이블에 캐릭터를 생성하였다.

클라이언트가 연결이 끊기면 Shared_ptr / Weak_ptr이 사라질거라고 단순하게 생각하고 작업하고있었는데,
생각해보니까 ObjectPool로 관리를 하고있어서 Shared_ptr이 절대 사라지지 않는걸 깨달아서,
작업을 클라이언트 매니저에서 ClientNumber값으로 찾아서 관리를 해야할것같다.
기존에 회사에서 쓰던 방식이 다 의미가 있었다는걸 알게되었다.
거기선 raw_ptr만사용하고 항상 클라이언트를 받을때는 연결id로 구분하여 관리를 했고, 연결이 끊기면 
해당 연결id로 찾는 컨테이너에서 빼내어 반납했기 때문에 연결이 끊김 여부도 확실하게 처리되었던것이다.

댓글