XDR(3)

명칭
xdr - 외부 데이터 표현의 프로그램 라이브러리 routine

서식 및 해설

이러한 routine에 의해, C 프로그래머는 임의의 데이터 구조를 머신 독립 에 기술할 수가 있습니다. 리모트 프로듀서 콜용의 데이터는, 이러한 routine를 사용해 송신됩니다.

xdr_array(xdrs, arrp, sizep, maxsize, elsize, elproc)
XDR *xdrs;
char **arrp;
u_int *sizep, maxsize, elsize;
xdrproc_t elproc;

    가변장 배열과 거기에 대응하는 외부 표현을 서로 변환한다 필터 원시적입니다. 파라미터 arrp (은)는 배열에의 포인터의 주소, sizep (은)는 배열의 요소 카운트의 주소이며, 이 요소 카운트는 maxsize (을)를 넘을 수 없습니다. 파라미터 elsize (은)는 각 배열 요소의 sizeof 의 값이며, elproc (은)는 배열 요소의 C 형식과 외부 표현을 서로 변환한다 XDR 필터입니다. 이 routine는, 성공하면 1 (을)를, 실패하면 0 을 돌려줍니다.

xdr_bool(xdrs, bp)
XDR *xdrs;
bool_t *bp;

    불리언 값 (C 언어 정수)과 그 외부 표현을 서로 변환한다 필터 원시적입니다. 데이터를 코드화할 때는, 이 필터는 1 또는 0 의 값을 만들어 냅니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_bytes(xdrs, sp, sizep, maxsize)
XDR *xdrs;
char **sp;
u_int *sizep, maxsize;

    카운트 한 byte string와 그 외부 표현을 서로 변환한다 필터 원시적입니다. 파라미터 sp (은)는 string 포인터의 주소 입니다. string의 길이는 주소 sizep 에 놓여져 string의 길이는 maxsize 보다 길어질 수 없습니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_char(xdrs, cp)
XDR *xdrs;
char *cp;

    C 언어의 캐릭터와 그 외부 표현을 서로 변환하는 필터 원시적 입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다. 주：코드화 된 캐릭터는 압축되지 않고, 각각은 4 바이트를 점유 합니다. 캐릭터의 배열에 대해서는, xdr_bytes(), xdr_opaque(), xdr_string() (을)를 사용하는 것을 생각하는 가치가 있습니다.

void
xdr_destroy(xdrs)
XDR *xdrs;

    XDR 스트림 xdrs 에 결합된 파괴 routine를 호출하는 매크로입니다. 파괴란, 통상은 그 스트림에 결합된 프라이빗 데이터 구조를 해방하는 것을 의미합니다. xdr_destroy() (을)를 호출한 다음에 xdrs (을)를 사용하는 것은, 미정도리입니다.

xdr_double(xdrs, dp)
XDR *xdrs;
double *dp;

    C 언어의 배정밀도수 ( double )(와)과 그 외부 표현을 서로 변환한다 필터 원시적입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_enum(xdrs, ep)
XDR *xdrs;
enum_t *ep;

    C 언어의 enum (실제는 정수)(와)과 그 외부 표현을 서로 변환한다 필터 원시적입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_float(xdrs, fp)
XDR *xdrs;
float *fp;

    C 언어의 float (와)과 그 외부 표현을 서로 변환한다 필터 원시적입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

void
xdr_free(proc, objp)
xdrproc_t proc;
char *objp;

    제네릭인 해방 routine입니다. 최초의 인수는, 해방하는 오브젝트의 XDR routine입니다. 2 번째의 인수는, 그 오브젝트 자체에의 포인터입니다. 주：이 routine에게 건네지는 포인터는 해방됩니다만, 그것이 가리키는 것은 해방 (반복적으로)됩니다.

u_int
xdr_getpos(xdrs)
XDR *xdrs;

    XDR 스트림 xdrs 에 결합된 위치 검색 routine를 호출하는 매크로입니다. 이 routine는, XDR 바이트 스트림의 위치를 나타내는 부호 없음의 정수를 돌려줍니다. XDR 스트림이 좋은 곳은, XDR 스트림 인스턴스가 그것을 프로텍션하고 있다고는 할 수 없는 경우여도, 이 숫자에 대해서 간단한 산술 계산을 사용할 수 있는 것입니다.

long *
xdr_inline(xdrs, len)
XDR *xdrs;
int len;

    XDR 스트림 xdrs 에 결합된 인 라인 routine를 호출하는 매크로입니다. 이 routine는, 스트림의 버퍼가 연속한 부분에의 포인터를 돌려줍니다. len (은)는, 희망하는 버퍼의 바이트장입니다. 주：포인터는 long * 에 캐스트 됩니다.

    경고: xdr_inline() (은)는, 연속하는 버퍼의 부분을 할당할 수 없는 경우는, NULL (0)(을)를 돌려주는 일이 있습니다. 따라서, 스트림 인스턴스에 의해 거동이 다른 경우가 있습니다. 이 routine는, 효율을 올리기 위해서(때문에) 준비되어 있습니다.

xdr_int(xdrs, ip)
XDR *xdrs;
int *ip;

    C 언어의 정수와 그 외부 표현을 서로 변환하는 필터 원시적 입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_long(xdrs, lp)
XDR *xdrs;
long *lp;

    C 언어 의 장 정수 ( long )(와)과 그 외부 표현을 서로 변환하는 필터 원시적입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

void
xdrmem_create(xdrs, addr, size, op)
XDR *xdrs;
char *addr;
u_int size;
enum xdr_op op;

    이 routine는, xdrs 에 의해 가리켜진다 XDR 스트림 오브젝트를 초기화합니다. 시냇물의 데이터는, 길이가 size 바이트를 넘지 않는다 addr 의 위치에 있는 메모리에 쓰기인가, 또는 거기로부터 읽어내집니다. op (은)는, XDR 스트림의 방향 ( XDR_ENCODE, XDR_DECODE, XDR_FREE 의 어느쪽이든)을 결정합니다.

xdr_opaque(xdrs, cp, cnt)
XDR *xdrs;
char *cp;
u_int cnt;

    고정 사이즈의 불투명 (opaque) 데이터와 그 외부 표현을 서로 변환한다 필터 원시적입니다. 파라미터 cp (은)는 불투명 데이터의 주소이며, cnt (은)는 그 사이즈를 바이트로 나타낸 것입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_pointer(xdrs, objpp, objsize, xdrobj)
XDR *xdrs;
char **objpp;
u_int objsize;
xdrproc_t xdrobj;

    xdr_reference() (와)과 같은 기능을 합니다. 단, 이 routine가 NULL 포인터를 시리얼화하는데 대해, xdr_reference() (은)는 시리얼화하지 않습니다. 따라서, xdr_pointer() (은)는 바이너리 트리나 링크 리스트와 같은 반복적 데이터 구조를 나타낼 수가 있습니다.

void
xdrrec_create(xdrs, sendsize, recvsize, handle, readit, writeit)
XDR *xdrs;
u_int sendsize, recvsize;
char *handle;
int (*readit) (), (*writeit) ();

    이 routine는, xdrs 에 의해 가리켜진다 XDR 스트림 오브젝트를 초기화합니다. 시냇물의 데이터는 사이즈 sendsize 의 버퍼에 쓰기, 값 0 은 시스템이 적절한 디폴트를 사용한다 필요가 있는 것을 나타냅니다. 스트림의 데이터는, 사이즈 recvsize 의 버퍼로부터 읽혀 이 routine도 값 0 을 건네주는 것에 의해 적절한 디폴트를 설정할 수가 있습니다. 스트림의 출력 버퍼가 한 잔 때는, writeit 하지만 불립니다. 같이 스트림의 입력 버퍼가 하늘 때는, readit 하지만 불립니다. 이러한 2 개의 routine의 거동은, 시스템 콜 read, write (와)과 닮아 있습니다. 단, read 에는 최초의 파라미터로서 handle 하지만 건네받는 것이 다릅니다. 주: XDR 스트림의 op 필드는, 호출원이 설정하지 않으면 안됩니다.

    경고: 이 XDR 스트림은, 중간 레코드 시냇물을 실장하고 있습니다. 따라서, 스트림에는 레코드의 경계 정보를 주는 추가 바이트가 들어가 있습니다.

xdrrec_endofrecord(xdrs, sendnow)
XDR *xdrs;
int sendnow;

    이 routine는, xdrrec_create() 에 의해 작성된 스트림에 대한 보고 호출할 수가 있습니다. 출력 버퍼에 있는 데이터는 완전한 레코드로서 마크 되어 출력 버퍼는 sendnow 하지만 0 이 아닌 경우는 옵션으로 써내집니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdrrec_eof(xdrs)
XDR *xdrs;
int empty;

    이 routine는, xdrrec_create() 에 의해 작성된 스트림에 대한 보고 호출할 수가 있습니다. 스트림중의 현재의 레코드의 나머지의 부분을 처리한 후에, 이 routine는 스트림에 그 이상의 입력이 없는 경우는 1 을 돌려주어, 어느 경우는 0 을 돌려줍니다.

xdrrec_skiprecord(xdrs)
XDR *xdrs;

    이 routine는, xdrrec_create() 에 의해 작성된 스트림에 대한 보고 호출할 수가 있습니다. 이것은, XDR 의 임플리멘테이션에 대해서, 스트림의 입력 버퍼에 있는 현재의 레코드의 나머지의 부분을 폐기하도록(듯이) 지시합니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_reference(xdrs, pp, size, proc)
XDR *xdrs;
char **pp;
u_int size;
xdrproc_t proc;

    구조체안을 뒤쫓는 포인터를 주는 원시적입니다. 파라미터 pp (은)는 포인터의 주소, size 하 *pp 하지만 가리키는 구조체의 사이즈, proc (은)는 구조체를 그 C 언어 형식과 외부 표현과의 사이에 필터 한다 XDR 프로시저입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

    경고: 이 routine는 NULL 포인터를 이해하지 않습니다. 대신에 xdr_pointer() (을)를 사용해 주세요.

xdr_setpos(xdrs, pos)
XDR *xdrs;
u_int pos;

    XDR 스트림 xdrs 에 결합된 위치 설정 routine를 호출하는 매크로입니다. 파라미터 pos (은)는, xdr_getpos() (으)로부터 취득한 위치를 나타내는 값입니다. 이 routine는, XDR 스트림의 위치를 재설정할 수 있는 경우는 1 을, 그렇지 않다 경우는 0 을 돌려줍니다.

    경고: XDR 스트림의 종류에 따라서는, 재설정은 곤란합니다. 따라서, 이 routine는 어느 종류류의 스트림에는 성공해, 다른 종류의 시냇물 에는 실패하는 경우가 있습니다.

xdr_short(xdrs, sp)
XDR *xdrs;
short *sp;

    C 언어의 단정수 ( short )(와)과 그 외부 표현을 서로 변환하는 필터 원시적입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

void
xdrstdio_create(xdrs, file, op)
XDR *xdrs;
FILE *file;
enum xdr_op op;

    이 routine는, xdrs 에 의해 가리켜진다 XDR 스트림 오브젝트를 초기화합니다. XDR 스트림 데이터는, 표준 I/O 스트림 file 에 쓰기인가, 또는 거기로부터 읽어 출 되고. 파라미터 op (은)는, XDR 스트림의 방향 ( XDR_ENCODE, XDR_DECODE, XDR_FREE 인지)를 결정합니다.

    경고: 이러한 XDR 스트림에 결합된 파괴 routine는, file 스트림에 대해 fflush() (은)는 호출합니다만, fclose() (은)는 결코 호출하지 않습니다.

xdr_string(xdrs, sp, maxsize)
XDR
*xdrs;
char **sp;
u_int maxsize;

    C 언어의 캐릭터 라인과 거기에 대응하는 외부 표현을 서로 변환한다 필터 원시적입니다. 캐릭터 라인의 길이는 maxsize (을)를 넘을 수 없습니다. 주: sp (은)는, string의 포인터의 주소입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_u_char(xdrs, ucp)
XDR *xdrs;
unsigned char *ucp;

    부호 없음의 C 언어의 캐릭터와 그 외부 표현을 서로 변환한다 필터 원시적입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_u_int(xdrs, up)
XDR *xdrs;
unsigned *up;

    C 언어의 부호 없음 정수 ( unsigned )(와)과 그 외부 표현을 서로 변환하는 필터 원시적입니다. 이 routine는 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_u_long(xdrs, ulp)
XDR *xdrs;
unsigned long *ulp;

    C 언어의 부호 없음장 정수 ( unsigned long )(와)과 그 외부 표현을 서로 변환하는 필터 원시적입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_u_short(xdrs, usp)
XDR *xdrs;
unsigned short *usp;

    C 언어의 부호 없음단정수 ( unsigned short )(와)과 그 외부 표현을 서로 변환하는 필터 원시적입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_union(xdrs, dscmp, unp, choices, dfault)
XDR *xdrs;
int *dscmp;
char *unp;
struct xdr_discrim *choices;
bool_t (*defaultarm) ();  /* may equal NULL */

    디스크리미난트로 식별된 C 언어의 공용체 ( union )(와)과 거기에 대응하는 외부 표현을 서로 변환한다 필터 원시적입니다. 우선 최초로 dscmp 에 위치하는 그 공용체의 디스크리미난트를 번역합니다. 이 디스크리미난트는, 항상 enum_t 입니다. 다음에, unp 에 위치하는 공용체가 번역됩니다. 파라미터 choices (은)는, xdr_discrim() 구조체의 배열에의 포인터입니다. 각 구조에는, 순서 첨부 페어의 [value,proc] 하지만 들어가 있습니다. 공용체의 디스크리미난트가 결합되었다 value 에 동일한 경우는, proc 하지만 불려 가 그 공용체를 번역합니다. xdr_discrim() 구조체 배열의 최후는, 값 NULL 의 routine에 의해 표가 붙여집니다. 배열 choices 에 디스크리미난트가 발견되지 않는 경우는, defaultarm 프로시저가 불려 갑니다 (이 프로시저가 NULL (이)가 아니다면). 거기에 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_vector(xdrs, arrp, size, elsize, elproc)
XDR *xdrs;
char *arrp;
u_int size, elsize;
xdrproc_t elproc;

    고정 쵸하이열과 거기에 대응하는 외부 표현을 서로 변환한다 필터 원시적입니다. 파라미터 arrp (은)는, 그 배열에의 포인터의 주소, size (은)는 배열의 요소수입니다. 파라미터 elsize (은)는 배열의 각 요소의 사이즈, elproc (은)는 배열 요소의 C 언어 형식과 그 외부 표현을 서로 번역한다 XDR 필터입니다. 이 routine는, 성공하면 1 을, 실패하면 0 을 돌려줍니다.

xdr_void()

    이 routine는 항상 1 을 돌려줍니다. 이것은, 함수 파라미터를 필요로 하지만 아무것도 하지 않는다 RPC routine에 건네줄 수가 있습니다.

xdr_wrapstring(xdrs, sp)
XDR *xdrs;
char **sp;

    xdr_string(xdrs, sp, MAXUN.UNSIGNED ); (을)를 호출하는 원시적이어, MAXUN.UNSIGNED (은)는 부호 없음 정수의 최대치입니다. RPC 패키지가 최대로 2 개의 XDR routine를 파라미터로서 건네줍니다만, 가장 빈번하게 사용되는 원시적임에도 불구하고 xdr_string() (은)는 3 개의 routine를 필요로 하기 (위해)때문에, xdr_wrapstring() (은)는 몹시 편리합니다. 성공하면 1 을, 실패하면 0 을 돌려줍니다.

참조
rpc(3)

다음의 메뉴얼을 참조해 주세요.
    eXternal Data Representation Standard: Protocol Specification
    eXternal Data Representation: Sun Technical Notes
    XDR: External Data Representation Standard, RFC1014, Sun Microsystems, Inc., USC-ISI