libpqxx 3

[메타버스 게임] 캐쥬얼 배틀로얄 프로젝트 유틸리티

개요지난 포스트를 통해 소켓 서버의 코어부터 레포지토리까지의 모든 계층에 작성된 로직을 알아보았다.보통 MVC패턴을 지킬 때 DTO, DAO등을 통해 API에 해당하는 요청 및 응답에 사용할 객체를 지정해 주는 편이었지만 소켓 서버에서는 빌드 시간을 고려하여 해당 로직은 제외하고 그냥 때에 따라 response를 제작하는 형식을 취했다. 이로 인해 코드 가독성은 그리 좋은편은 아니다, Session클래스의 process_request메서드에 action에 따른 분기 처리를 해주느라 코드 길이가 매우 길어졌다. 메서드 한개의 길이가 거의 200에 달하니 말할 것도 없다. 따라서 소켓 서버에서 어떤식으로 코드를 작성하면 좋을지에 대해선 더 공부가 필요해 보인다. 각설하고 DB트랜잭션 및 암호화를 진행하는 과..

[메타버스 게임] 캐쥬얼 배틀로얄 프로젝트 레포지토리 계층

개요지난 서비스계층에 이어 이번엔 트랜잭션 처리를 통한 DB와의 통신을 담당하는 레포지토리 계층에 대해 작성한 내용을 공유하고자 한다. 현재 서버에서는 회원가입, 로그인 등과 같은 인증과 방 생성, 참가, 퇴장, 조회 등 매칭 관련 트랜잭션, 게임 시작 및 종료 시 방 상태를 업데이트하는 트랜잭션을 수행한다. 데이터베이스는 PostgreSQL을 사용하였으므로 pqxx라이브러리를 사용해 DB서버와 통신하며, 고립성을 보장하여 멀티 플레이 환경에서의 동시성 처리를, 원자성을 보장하여 트랜잭션 도중 한 곳에서 예외가 발생한다면 해당 작업 이전의 작업들을 모두 롤백해 주는 것을 가장 중요시하여 로직을 작성하였다.  user_repository.h// repository/user_repository.h#pragm..

[메타버스 게임] 캐쥬얼 배틀로얄 프로젝트 vcpkg C++ 라이브러리 설치

개요소켓 서버를 C++의 Boost.asio라이브러리를 기반으로 구현할 것이기 때문에 관련 패키지 설치가 필요하다.또한 PostgreSQL과 트랜잭션이 필요하므로 관련 라이브러리가 필요하다. 그 외에도 통신에 사용될 타입을 json으로 사용, 서버 로그를 기록하고 보안을 유지하기 위해 관련 라이브러리들의 설치가 필요하다. vcpkg를 사용한다면 마치 python의 venv처럼 프로젝트 내에서 필요한 패키지를 설치하고 사용할 수 있다.이는 컴퓨터 내에 전역으로 패키지를 설치하지 않기 때문에 다양한 장소에서도 레포지토리를 clone 후 이미 지정해 놓은 패키지들을 명시하여 설치해 줄 수 있어 편리하다.  vcpkg 설치윈도우 환경이라면 powerShell을 사용하여 설치할 수 있다.# vcpkg 저장소 클론..

728x90