이벤트 핸들링

이벤트 핸들러 다루기

ProudNet의 이벤트 핸들링은 delegate 패턴으로 되어 있습니다.

클라이언트에서는 Proud.INetClientEvent 클래스를 상속받아 구현하고, 서버에서는 Proud.INetServerEvent 클래스를 상속받아 구현합니다. 구현한 클래스의 인스턴스를 만든 후 서버에서는 Proud.CNetServer.SetEventSink로, 클라이언트에서는 Proud.CNetClient.SetEventSink를 통해 연계해주어야 합니다.

class MyEvent:public INetClientEvent
{
    virtual void OnJoinServerComplete(...) override 
    { 
        // my event handler
        ...
    }
}
 
MyEvent m_myEvent;
myNetServer->SetEventSink(&m_myEvent); 

C++11을 지원하는 컴파일러를 쓰신다면,

위와 같은 클래스를 상속받는 대신 람다식을 쓰시면 더 간결한 프로그래밍을 하실 수 있습니다.

myNetServer->OnJoinServerComplete = [...](...) 
    {
        // my event handler
        ...
    };

위 과정을 통해 이벤트 콜백을 받을 수 있는 시점에 대해서는 메인 루프의 이해 를 참고하시기 바랍니다.

클라이언트에서 이벤트 핸들러 연계

서버에서 발생할 수 있는 대표적인 이벤트는 '클라이언트로부터의 연결받기' 등이 있고, 클라이언트에서 발생하는 대표적인 이벤트는 '서버와의 연결 성사', 'P2P 멤버의 참여' 등이 있습니다.

Last updated

Was this helpful?