Files
Sun1602/Server/Shop/ClientDialog/include/BillingClient/interface/LibClientSession.h
T
2022-10-26 12:25:11 +08:00

85 lines
2.6 KiB
C++

#pragma once
// 빌링 서버 연동 샘플
#include <ImportLibrary.h> // 필요한 ClientStub 라이브러리 import
#include <Winsock2.h>
#include <WBANetwork/WBANetwork.h>
#include "BillEventHandler.h"
class CLibClientSession : public CBillEventHandler
{
public:
CLibClientSession(void);
virtual ~CLibClientSession(void);
protected:
// 빌링서버의 로그를 작성 이벤트 : 함수내부에서 로그를 남길수 있도록 해야 함.
void WriteLog(char* szMsg);
// 빌링서버의 연결 성공 여부
// (새로 연결되면 현재 차감이 필요한 모든 유저의 정보를 다시 로그인해야한다.)
// success : 연결 성공 여부
// error : 에러코드
void OnNetConnect(bool success, DWORD error);
// 빌링서버로 보낸 데이타 전송 여부
// size : 전송된 패킷 사이즈
void OnNetSend(int size);
// 빌링서버와 세션이 끊겼을때 (빌링서버가 죽은것으로 처리 해야한다.)
// error : 에러코드
void OnNetClose(DWORD error);
// 유저의 결재 정보가 변경되었을 때 전달받는 콜백
// 정상 로그인의 경우 : (0 == nResultCode) && (0 == nAccessCheck) && (0 != nDeductType)
void OnUserStatus(
DWORD dwAccountGUID, // 계정 GUID
long dwBillingGUID, // 빌링 유니크 아이디
DWORD RealEndDate, // 정액 사용 종료 일시 (__time32_t)
DWORD EndDate, // 정액 실제 종료 일시
double dRestPoint, // 정량 잔여 포인트
double dRestTime, // 정량 잔연 시간(초)
short nDeductType, // 사용자 차감 유형
short nAccessCheck, // 접근 체크 결과
short nResultCode); // 처리 결과
// PC 방 멀티 유저 조회 결과
// Result : 1 (가능), 2 (불가), -1 (PC방 정보 없음)
void OnInquireMultiUser(
long AccountID, // 계정 GUID
long RoomGUID, // PC 방 GUID
long Result); // 처리 결과
// 개인의 게임 별 정액, 정량 보유 여부 조회 결과
void OnInquirePersonDeduct(
long AccountGUID, // 계정 GUID
long GameCode, // 게임 코드
long ResultCode); // 처리 결과
// 특정 PC방의 게임 별 정량 보유 여부 조회 결과
void OnInquirePCRoomPoint(
long AccountGUID, // 계정 GUID
long RoomGUID, // PC 방 GUID
long GameCode, // 게임 코드
long ResultCode); // 처리 결과
// 빌링에 로그인한 유저 정보를 인증서버에 전송
// 실제로 인증서버에 로그인 했는지 체크하도록 알려주는 인터페이스
// 정량에 대해서만 로그인 후 약 3분에 한번씩 전송.
// 상품이 변경되는 시점과, 로그아웃 되면 전송되지 않는다.
void OnCheckLoginUser(
long AccountID, // 계정 GUID
long BillingGUID); // 빌링 유니크 아이디(로그인 성공 시 OnUserStatus 함수를 통해 전달된 값)
// 빌링서버에 접속한 이후 PC방 업주가 PC방 IP를 변경했을 때,
// 빌링서버에 접속되어져 있는 게임서버로 IP변경한 PC방 GUID를 알려줌.
void OnPCRoomIPUpdate(
long RoomGUID, // PC 방 GUID
long GameCode); // 처리 결과
private:
CRITICAL_SECTION m_cs;
};