Sun Java System Messaging Server 6 2005Q4 관리 설명서

사용자 제공 루틴 대체: $[...]

$[image,routine,argument] 형식의 대체는 사용자 제공 루틴을 검색 및 호출하는 데 사용됩니다. UNIX의 런타임에서 MTA는 dlopendlsym을 사용하여 공유 라이브러리 이미지에서 지정된 루틴을 동적으로 로드 및 호출합니다. 그런 다음 루틴은 다음 인수 목록과 함께 함수로 호출됩니다.

status := routine (argument, arglength, result, reslength)

argumentresult는 252바이트 길이의 문자열 버퍼입니다. UNIX에서 argumentresult는 문자열에 대한 포인터로 전달됩니다(예: C에서는 char*로 전달됨). arglengthreslength는 참조에 의해 전달되는 서명된 정수(Long)입니다. 입력 시에 argument는 다시 쓰기 규칙 템플리트의 인수 문자열을 포함하며 arglength는 해당 문자열의 길이를 포함합니다. 반환 시에 결과 문자열은 result에 포함되고 그 길이는 reslength에 포함되어야 합니다. 그런 다음 해당 결과 문자열은 다시 쓰기 규칙 템플리트의 "$[image,routine,argument]"를 대체합니다. 루틴은 다시 쓰기 규칙이 실패할 경우 0을 반환하고 성공할 경우 -1을 반환합니다.

이 기법을 통해 다시 쓰기 프로세스는 모든 종류의 복잡한 방법으로 확장될 수 있습니다. 예를 들어, 일부 유형의 이름 서비스에 대한 호출을 수행하고 그 결과를 사용하여 주소를 일정한 방식으로 변경할 수 있습니다. 호스트siroe.com에 대한 정방향 지정 주소(예: To: 주소)에 대해 다음 다시 쓰기 규칙을 사용하여 디렉토리 서비스 조회를 수행할 수 있습니다. 방향 및 위치 특정 다시 쓰기 규칙: $B, $E, $F, $R에 설명된 $F는 정방향 지정 주소에 대해서만 이 규칙이 사용되도록 합니다.

siroe.com $F$[LOOKUP_IMAGE,LOOKUP,$U]

정방향 지정 주소 jdoe@siroe.com은 이 다시 쓰기 규칙과 일치할 경우 LOOKUP_IMAGE(UNIX의 공유 라이브러리)가 메모리에 로드된 다음 LOOKUP 루틴이 인수 매개 변수로 jdoe와 함께 호출되게 합니다. 그런 다음 LOOKUP 루틴은 결과 매개 변수에서 다른 주소, 즉 John.Doe%eng.siroe.com과 다시 쓰기 규칙이 성공했음을 나타내는 값 -1을 반환할 수 있습니다. 결과 문자열의 백분율 기호( 반복되는 다시 쓰기 템플리트: A%B 참조)는 John.Doe@eng.siroe.com을 다시 쓸 주소로 사용하여 다시 쓰기 프로세스가 다시 시작되게 합니다.

UNIX 시스템에서 사이트 제공 공유 라이브러리 이미지는 세계 공용이어야 합니다.