메서드 사용

클라이언트가 라우팅 테이블 관리자에 등록하면 메서드 집합을 내보낼 수 있습니다. 이러한 메서드는 다른 클라이언트에서 클라이언트 관련 정보를 가져오는 데 사용됩니다. 메서드를 사용하면 라우팅 테이블 관리자의 클라이언트 간에 프라이빗 통신이 가능합니다.

클라이언트는 다른 클라이언트에서 내보낸 메서드 목록을 가져올 수 있습니다. 클라이언트는 RtmGetEntityMethods 함수를 호출하여 대상 클라이언트의 핸들을 제공합니다.

클라이언트에서 내보낸 각 메서드는 해당 메서드 식별자에 의해 고유하게 식별됩니다. 각 클라이언트는 최대 32개의 메서드를 내보낼 수 있습니다. 각 메서드는 RTM_ENTITY_EXPORT_METHOD 구조체의 MethodType 멤버에 설정된 비트에 해당합니다. 여러 메서드를 호출하려면 클라이언트가 해당 메서드에 대한 식별자의 논리적 OR을 수행해야 합니다. 프로토콜이 구현될 때 각 프로토콜에 대한 입력 및 출력 구조의 구문과 의미 체계를 지정해야 합니다.

참고

MethodType 멤버의 아래쪽 절반에 설정된 비트에 해당하는 메서드 식별자 값(하위 16비트)은 Microsoft에서 예약합니다.

 

두 번째 클라이언트의 메서드를 호출하기 위해 클라이언트는 RtmInvokeMethod 함수를 호출합니다. 라우팅 테이블 관리자는 클라이언트의 메서드를 호출하기 위해 모든 요청을 중재합니다. 라우팅 테이블 관리자는 클라이언트 간에 중재할 때 두 가지 함수를 수행합니다.

  • 두 번째 클라이언트가 등록 취소 중인 클라이언트에 대한 메서드를 호출하지 못하도록 합니다.
  • 메서드가 차단될 때 "invoke" 요청을 유지하고 메서드가 차단 해제될 때 요청을 계속할 수 있도록 합니다.

클라이언트가 다른 클라이언트가 해당 메서드를 실행하지 못하도록 해야 하는 경우 클라이언트는 RtmBlockMethods를 호출할 수 있습니다. 라우팅 테이블 관리자는 클라이언트가 메서드를 다시 차단 해제할 때까지 RtmInvokeMethod 에 대한 호출을 처리할 수 없습니다.

클라이언트는 일반적으로 클라이언트 간에 교환되는 프라이빗 데이터를 변경할 때 메서드를 차단합니다. 차단 메서드는 선택적 작업입니다. 클라이언트는 내부 잠금을 사용하여 다른 클라이언트가 메서드를 호출하지 못하도록 할 수도 있습니다.

이러한 함수를 사용하는 방법을 보여 주는 샘플 코드는 클라이언트에 대해 내보낸 메서드 가져오기 및 호출을 참조하세요.