❌C++ SP프로시저 구조 제작
❌C# DummyClient 수동 조작으로 Character 생성 까지 만들어보기
🔁Client Allocater 제작 Client(IOCP통신객체) -> GameClient(Game에서사용)상속 객체
* Function 이용, 상속구조 GameClient Allocater
* 생성시 GameClient 풀에서 가져와서 Client로 캐스팅
* 해제시 Client를 GameClient로 캐스팅 > 없으면 smart_ptr해제, 있으면 풀 반납
🔁InitPacketHandler() >생성자로 이동하여 호출누락 방지.
🔁매니저 생성자는 Private로 설정하여 Instance외에 호출되지 않도록 수정
🔁ObjectPool() -> Clear함수 추가
🔁Iocp 시작시 Client allocater 매개변수 추가
🔁DBManager제작
* DBConnection / Thread / DBRequest Queue관리
🔁프로시저호출 테스트완료
오전~저녁먹기까지는 주말이다보니 괜히 쉬고싶어져서 쉬었다..ㅋㅋ
SP프로시저 구조는 일단 미뤄야할것같다
생각보다 해야할게 너무 많았다
이제곧 로그인 까지는 가까이 온것같은데
기존에 회사에서 했었던 분산서버에서는 DB도 서버가 따로있어서
모든게 패킷으로 처리하면 되었다.
근데 하나에 서버로 하려고 보니까 패킷은 아니고, 그러면 클래스로 각각 있어야한다.
(정보를 담아서 DB쓰레드에 넘겨줘야하니까)
그리고 DB작업후 다시 보내주는것도 문제가 될것 같았는데,
기존에는 로그인 같은 경우 로그인서버에서 패킷을 DB 보냈기 때문에
DB도 결과를 패킷으로 다시 줬으면 그만이었다.
하지만 지금은 하나의 서버다보니까, Client State로 구분해서 패킷을 한번 걸러내고
DB함수에 강제로 이후 행동을 지정하거나
DBReqest에서 CallBack(Function)으로 따로 해야할것 같은 느낌이다.
Login같은경우는 CallBack으로 캐싱, Send
Game로직은 CallBack으로 Game인스턴스 작업목록에 Push하는 방식으로 해야할것 같다.
강제로 하면 아무래도 DB스레드에서 Game에 들어가야하니 ThreadSafe하지 않을듯.
그래서 Game인스턴스에 그냥 던져주고 해당 스레드가 처리하는 방식으로 해야할듯 하다.
근데 또 지금 생각해보니 DB작업동안 User가 다른곳으로 이동할수도 있기 때문에
DBResponse를 처리할 중앙 관리자가 필요할것 같다.
멀티스레드로 짜려고 해보니까 시작부터 꽤 복잡한느낌이다
'학습 노트 > 개인학습' 카테고리의 다른 글
250609 월요일 @ 43일차 (0) | 2025.06.10 |
---|---|
250608 일요일 @ 42일차 (0) | 2025.06.09 |
250606 금요일 @ 40일차 (ODBC MSSQL 연결) (0) | 2025.06.07 |
250605 목요일 @ 38일차 (0) | 2025.06.06 |
250603 화요일 @ 37일차 (0) | 2025.06.04 |
댓글