7.4.9 EH메신저 DBM 라이브러리 설계 및 구현 [TCP/IP 소켓 프로그래밍 with 윈도우즈]

이번에는 DBM 라이브러리를 설계 및 구현합시다.

DBM 라이브러리에는 비지니스 계층과 데이터 계증 사이에 주고 받는 메시지들을 정의할 것입니다. 응용 프로토콜 스택 정의에서 IDExist(아이지 존재 확인 요청), IDExistAck(아이디 존재 확인 응답), AddUserInfo(계정 정보 추가), UserSts(사용자 상태 요청), UserStsAck(사용자 상태 요청 응답), IsCorrect(패스워드 일치 확인 요청), IsCorrectAck(패스워드 일치 확인 요청 응답), ChangeSts(상태 변경 요청)이 있습니다.

DBM 라이브러리는 비지니스 계층의 서버와 데이터 계층의 Dbm 서버가 사용합니다.

[그림 7.18] DBM 관련 노드 컴포넌트 다이어그램
[그림 7.18] DBM 관련 노드 컴포넌트 다이어그램
 이제 DBM 라이브러리를 작성합시다. DBM 라이브러리는 DbmLib 이름으로 만들게요.

DBM 라이브러리에 정의할 메시지 종류마다 클래스로 정의할게요. 먼저 EH 메신저 솔루션에 DbmLib 이름으로 Win2프로젝트를 추가하고 DLL 형태로 만드세요.

작성 원리는 가입(로그, 상태) 라이브러리 작성 원리와 같습니다. DBM 라이브러리에서 공통으로 포함해서 사용할 Dbm.h 파일을 Common 프로젝트에 추가합니다.

상태의 종류를 매크로 상수로 정의합시다.

IDExist 클래스를 구현합시다. IDExist.h 파일은 Common 프로젝트에 추가하고 IDExist.cpp 파일은 DbmLib 프로젝트에 추가하여 구현합니다. 구현 방법은 앞에서 만들었던 다른 메시지들과 같으므로 코드 설명은 생략할게요.

다음은 IDExist.cpp 파일을 작성한 코드입니다.

IDExistAck 클래스를 작성합시다. 마찬가지로 헤더 파일은 Common 프로젝트에 소스 파일은 DbmLib 프로젝트에 추가합니다.

다음은 IDExistAck.h 파일을 작성한 코드입니다.

다음은 IDExistAck.cpp 파일을 작성한 코드입니다.

AddUserInfo 메시지를 정의합시다. 마찬가지로 헤더 파일은 Common 프로젝트에 소스 파일은 DbmLib 프로젝트에 추가합니다.

다음은 AddUserInfo.h 파일을 작성한 코드입니다.

다음은 AddUserInfo.cpp 파일을 작성한 코드입니다.

UserSts(사용자 상태 요청)메시지를 정의합시다. 마찬가지로 헤더 파일은 Common 프로젝트에 소스 파일은 DbmLib 프로젝트에 추가합니다. 다음은 UserSts.h 파일을 작성한 코드입니다.

다음은 UserSts.cpp 파일을 작성한 코드입니다.

사용자 상태 응답 메시지인 UserStsAck 클래스를 작성합시다. 마찬가지로 헤더 파일은 Common 프로젝트에 소스 파일은 DbmLib 프로젝트에 추가합니다.

다음은 UserStsAck.h 파일을 작성한 코드입니다.

다음은 UserStsAck.cpp 파일을 작성한 코드입니다.

비밀번호가 일치하는지 확인 요청하는 IsCorrect 메시지를 정의합시다. 마찬가지로 헤더 파일은 Common 프로젝트에 소스 파일은 DbmLib 프로젝트에 추가합니다.

다음은 IsCorrect.h 파일을 작성한 코드입니다.

다음은 IsCorrect.cpp 파일을 작성한 코드입니다.

비밀번호 일치 요청에 관한 응답 메시지인 IsCorrectAck를 정의합시다. 마찬가지로 헤더 파일은 Common 프로젝트에 소스 파일은 DbmLib 프로젝트에 추가합니다.

다음은 IsCorrectAck.h 파일을 작성한 코드입니다.

다음은 IsCorrectAck.cpp 파일을 작성한 코드입니다.

상태 변경을 요청인 ChangeSts 메시지를 정의합시다. 마찬가지로 헤더 파일은 Common 프로젝트에 소스 파일은 DbmLib 프로젝트에 추가합니다.

다음은 ChangeSts.h 파일을 작성한 코드입니다.

다음은 ChangeSts.cpp 파일을 작성한 코드입니다.

계정 정보를 삭제하는 RemoveUser 메시지를 정의합시다. 마찬가지로 헤더 파일은 Common 프로젝트에 소스 파일은 DbmLib 프로젝트에 추가합니다.

다음은 RemoveUser.h 파일을 작성한 코드입니다.

다음은 RemoveUser.cpp 파일을 작성한 코드입니다.

DBM 라이브러리 테스트는 가입(로그, 상태) 라이브러리 테스트 방법과 일치합니다. 이미 많은 반복을 하였으므로 여러분에게 맡기고 여기에서는 생략할게요.