Макросы, связанные с потоками
Наиболее интересны два макроса, связанные с потоками :
- получение текущей позиции
int xdr_getpos(xdr_handle)
XDR *xdr_handle; /* handle */
Этот макрос возвращает целое число, указывающее на текущую позицию в потоке.
- позиционирование в потоке
bool_t xdr_setpos(xdr_handle, pos)
XDR *xdr_handle; /* handle */
int pos; /* позиция в потоке */
Этот макрос возвращает TRUE, если позиционирование возможно. С помощью этих макросов можно определить число байтов, требующееся для хранения данных XDR.
ПРОГРАММА 48
/*вычисление числа байтов пpи кодиpовании XDR */ #include <stdoi.h> #include <rpc/rpc.h>
main() { XDR xdrs; /*дескpиптоp XDR */ int pos1, pos2; /*позиции */
/*позиция пеpед кодиpованием xdr */ pos1 = xdr_getpos(&xdrs); /*кодиpование xdr */ .............. /* позиция после кодиpования xdr */ pos2 = xdr_getpos(&xdrs); print("nombre octets dans le flot XDR %d/n", pos2-pos1); }