P2P 실패 후, 릴레이 서버 이용 시 프로토콜

프라우드넷 기반으로 네크워크 프레임 워크와 서버 구성을 하고 있습니다.

global GameC2S 10000
{
 RequestLogin([in] long account,  [in] string login);
...
}
global GameS2C 11000
{
 ResponseLogin([in] int result);    
...
}
global GameC2C 12000 
{
 NotifyPlay([in] long account, [in] byte info);          
 NotifySync([in] long account, [in] byte info);      
}

여기서 P2P 홀 펀칭에 실패한 경우, 릴레이 서버와의 통신 프로토콜을 GameC2C 내용 프로토콜을 그대로 복사해 옮겨서 GameC2S, GameS2C 에 사용하면 아래와 같이 해당되는 것인지 문의 드립니다.

global GameC2S 10000
{
 RequestLogin([in] long account,  [in] string login);
...
 RequestPlay([in] long account, [in] byte info);          
 RequestSync([in] long account, [in] byte info);     
}
global GameS2C 11000
{
 ResponseLogin([in] int result);    
...
 ResponsePlay([in] long account, [in] byte info);          
 ResponseSync([in] long account, [in] byte info);         
}
global GameC2C 12000 
{
 NotifyPlay([in] long account, [in] byte info);          
 NotifySync([in] long account, [in] byte info);      
}

GameC2C의 프록시 객체로 다른 클라이언트에게 송신을 했다면 릴레이 서버를 경우해서 P2P 통신이 이루어지게 되더라도 C2C 프로토콜을 사용하게 됩니다. 때문에 후자의 코드와 같이 C2S와 S2C에 중복해서 정의할 필요가 없습니다.
P2P 수신이 릴레이된 것인지 아닌지는 Stub의 RmiContext 객체의 is_relayed를 확인하시면 됩니다.