Proud::INetServerEvent 클래스 참조abstract
Proud::INetServerEvent에 대한 상속 다이어그램 :

Public 멤버 함수

virtual void OnClientJoin (CNetClientInfo *clientInfo)=0
 
virtual void OnClientLeave (CNetClientInfo *clientInfo, ErrorInfo *errorinfo, const ByteArray &comment)=0
 
virtual void OnClientOffline (CRemoteOfflineEventArgs &args)
 
virtual void OnClientOnline (CRemoteOnlineEventArgs &args)
 
virtual bool OnConnectionRequest (AddrPort clientAddr, ByteArray &userDataFromClient, ByteArray &reply)
 
virtual void OnP2PGroupJoinMemberAckComplete (HostID groupHostID, HostID memberHostID, ErrorType result)=0
 
virtual void OnUserWorkerThreadBegin ()=0
 
virtual void OnUserWorkerThreadEnd ()=0
 
virtual void OnClientHackSuspected (HostID clientID, HackType hackType)
 
virtual void OnP2PGroupRemoved (HostID groupID)
 
- Proud::INetCoreEvent(으)로부터 상속된 Public 멤버 함수
virtual void OnError (ErrorInfo *errorInfo)=0
 
virtual void OnWarning (ErrorInfo *errorInfo)=0
 
virtual void OnInformation (ErrorInfo *errorInfo)=0
 
virtual void OnException (Exception &e)=0
 
virtual void OnNoRmiProcessed (RmiID rmiID)=0
 
virtual void OnReceiveUserMessage (HostID sender, const RmiContext &rmiContext, uint8_t *payload, int payloadLength)
 
virtual void OnTick (void *)
 
virtual void OnUserWorkerThreadCallbackBegin (CUserWorkerThreadCallbackContext *)
 
virtual void OnUserWorkerThreadCallbackEnd (CUserWorkerThreadCallbackContext *)
 

상세한 설명

CNetServer 용 event sink

용법

  • 이 객체를 구현한다.
  • CNetServer 에 파라메터로 전달한다.

멤버 함수 문서화

virtual void Proud::INetServerEvent::OnClientHackSuspected ( HostID  clientID,
HackType  hackType 
)
inlinevirtual

클라이언트가 해킹당했다는 의혹이 있을 때 이 메서드가 호출된다.

매개변수
clinetID의심되는 client의 HostID
hackType해킹의 종류
virtual void Proud::INetServerEvent::OnClientJoin ( CNetClientInfo clientInfo)
pure virtual

클라이언트가 연결을 들어오면 발생하는 이벤트

  • OnConnectionRequest에서 진입 허가를 한 클라이언트에 대해서만 콜백된다.
    매개변수
    clientInfo연결이 들어온 클라이언트
virtual void Proud::INetServerEvent::OnClientLeave ( CNetClientInfo clientInfo,
ErrorInfo errorinfo,
const ByteArray comment 
)
pure virtual

클라이언트가 연결을 해제하면 발생하는 이벤트입니다.

매개변수
clientInfo연결이 해제된 클라이언트의 정보입니다.
errorInfo연결이 해제된 클라이언트의 연결 해제 정보입니다. ErrorInfo.m_type 값은 연결 해제의 경위를, ErrorInfo. 자세한 것은 ErrorInfo 도움말에 있습니다.
comment클라이언트가 CNetClient.Disconnect 의 파라메터 comment 를 통해 보내온 문자열입니다.
virtual void Proud::INetServerEvent::OnClientOffline ( CRemoteOfflineEventArgs args)
inlinevirtual

클라이언트가 끊겼을 때 콜백 됩니다. 해당 이벤트가 콜백이 된 뒤, 재 접속이 이루어지지 않으면 OnClientLeave 가 콜백 됩니다. (해당 함수는 NetClient 의 NetConnectionParam.m_enableAutoConnectionRecovery 가 true 로 설정 되어야 합니다.)

매개변수
args연결이 끊긴 클라이언트의 정보를 담고 있습니다.
virtual void Proud::INetServerEvent::OnClientOnline ( CRemoteOnlineEventArgs args)
inlinevirtual

클라이언트가 끊긴 뒤 재 접속 되었을 때 콜백 됩니다. (해당 함수는 NetClient 의 NetConnectionParam.m_enableAutoConnectionRecovery 가 true 로 설정 되어야 합니다.)

매개변수
args재 연결이 된 클라이언트의 정보를 담고 있습니다.
virtual bool Proud::INetServerEvent::OnConnectionRequest ( AddrPort  clientAddr,
ByteArray userDataFromClient,
ByteArray reply 
)
inlinevirtual

클라이언트가 서버로 처음 연결을 시도하면 콜백되는 이벤트

  • 이 이벤트에서는 서버가 클라의 연결 시도를 수용할 것인지 거절할 것인지를 결정한다. 만약 거절할 경우 클라이언트는 서버와의 연결이 실패하며 클라이언트는 ErrorType_NotifyServerDeniedConnection 를 받게 된다. 만약 수용할 경우 클라이언트는 서버와의 연결이 성공하게 되며 클라이언트는 새 HostID 를 할당받게 된다. 이때 서버는 OnClientJoin 이벤트가 콜백된다.

주의사항

  • 절대! 여기에서 유저의 로그온 정보(아이디,비밀번호)를 주고받지 말아야 한다. 왜냐하면 여기서 클라이언트가 서버로 보내는 커스텀 데이터는 비 암호화되어 있기 때문이다.
매개변수
clientAddr클라이언트의 인터넷 주소
userDataFromClient클라이언트에서 보낸 커스텀 데이터. 이 값은 클라이언트에서 서버로 연결시 넣었던 파라메터 CNetConnectionParam::m_userData 에서 넣었던 값이다.
reply이 이벤트 콜백에서 이 필드에 값을 채우면 클라이언트는 서버와의 연결 결과 INetClientEvent::OnJoinServerComplete 에서 받게 된다.
반환값
클라이언트로부터의 연결을 수용할 것이라면 이 함수는 true를 리턴하면 된다.
virtual void Proud::INetServerEvent::OnP2PGroupJoinMemberAckComplete ( HostID  groupHostID,
HostID  memberHostID,
ErrorType  result 
)
pure virtual

P2P 그룹 에 새 멤버가 추가되는 과정이 모든 클라이언트에서도 완료되면 발생하는 이벤트입니다.

  • 만약 그룹 G에 기 멤버 M1,M2,M3가 있다고 가정할 경우 신규 멤버 M4를 넣는다고 합시다. 이때 JoinP2PGroup()에 의해 M4가 추가되더라도 즉시 완료되는 것은 아닙니다. 각 클라이언트 M1,M2,M3에서는 아직 'M4의 추가되었음' 보고(INetClientEvent.OnP2PMemberJoin)를 받지 않았고 M4에서도 M1,M2,M3,M4 모두에 대한 '추가되었음 보고'(INetClientEvent.OnP2PMemberJoin)를 받지 않았기 때문입니다. 이 이벤트는 M4에 대해, M1,M2,M3,M4에서 이들을 모두 받은 것을 서버에서 확인한 후에야 발생됩니다.
  • CreateP2PGroup에 대해서도 마찬가지로 이 이벤트가 발생합니다.
매개변수
groupHostID그룹의 HostID
memberHostID그룹 멤버의 HostID
resultErrorType_Ok 이면 성공적으로 추가됐음을 의미하며,ErrorType_AlreadyExists 이면 이미 그룹내 들어가있는 멤버임을 의미 합니다.(실패 했다는 의미는 아님) 그외 다른 값이면 추가가 실패했음을 의미합니다. 예를 들어 CNetServer.CreateP2PGroup 혹은 CNetServer.JoinP2PGroup 호출 후에 이 콜백이 있기 전에 CNetServer.LeaveP2PGroup 혹은 CNetServer.DestroyP2PGroup 를 호출 하거나, 해당 클라이언트가 동시에 서버와의 연결을 끊고 있는 중이었다면 다른 값이 여기에 들어갈 수 있습니다.
virtual void Proud::INetServerEvent::OnP2PGroupRemoved ( HostID  groupID)
inlinevirtual

P2P group이 제거된 직후 이 메서드가 호출됩니다.

  • P2P group이 제거되는 조건은 Proud.CNetServer.DestroyP2PGroup 를 호출하거나 P2P group 에 소속된 마지막 멤버가 서버와의 접속을 종료할 때 등입니다.
virtual void Proud::INetServerEvent::OnUserWorkerThreadBegin ( )
pure virtual

user work thread pool의 스레드가 시작할 때 이 메서드가 호출된다.

virtual void Proud::INetServerEvent::OnUserWorkerThreadEnd ( )
pure virtual

user work thread pool의 스레드가 종료할 때 이 메서드가 호출된다.