구현 예와 함께 설명하겠습니다.
코드 [C++]
CalcC2SStub.RequestAdd_Function = []PARAM_CalcC2SStub_RequestAdd { // ➊ int sum = a + b; // ➋ CalcS2CProxy.ResponseAdd(remote, RmiContext::ReliableSend, sum); }; // ➌ };
코드 [C#]
// ➊ int = + ; // ➋ .ResponseAdd( , . , ); // ➌ }; };. = ( , , , ) {
➊ 클라이언트에서 메시지를 보낸, 즉 원격으로 호출한 RequestAdd() 함수가 실행할 루틴을 람다식으로 넣어 주는 부분입니다. PARAM_으로 시작하는 매크로는 람다식의 매개변수를 미리 정의해 놓은 매크로입니다. [...] 부분은 람다 캡처입니다.
➋ 두 값을 더합니다.
➌ 서버에서 클라이언트에 원격으로 함수를 호출합니다. 즉, 서버에서 클라이언트로 두 값을 더한 결과 메시지를 보냅니다. 여기서 remote는 앞서 수신할 때 송신자의 식별자(HostID)입니다.