Provided by:
manpages-pt-dev_20040726-4_all 
NOME
xdr - rotinas de biblioteca para representacao externa de dados
SINOPSE E DESCRI,C~AO
Estas rotinas permitem que programadores C descrevam estruturas de
dados arbitrariamente em um modelo independente de maquina. Dados para
chamadas de procedimento remoto sao transmitidos usando estas rotinas.
xdr_array(xdrs, arrp, sizep, maxsize, elsize, elproc)
XDR *xdrs;
char **arrp;
u_int *sizep, maxsize, elsize;
xdrproc_t elproc;
Uma primitiva de filtro que traduz entre matrizes de comprimento
variavel e suas representacoes externas correspondentes. O
parametro arrp e o endereco do ponteiro para a matriz, enquanto
sizep e o endereco do elemento 'count' da matriz; este elemento
'count' nao pode exceder maxsize. O parametro elsize e o sizeof
de cada um dos elementos da matriz, e elproc e um filtro XDR que
traduz entre o formato C dos elementos da matriz e suas
representacoes externas. Esta rotina retorna um se for bem-
sucedida, e zero caso contrario.
xdr_bool(xdrs, bp)
XDR *xdrs;
bool_t *bp;
Uma primitiva de filtro que traduz entre booleanos (inteiros C)
e suas representacoes externas. Quando codifica dados, este
filtro produz valores 'um' ou 'zero'. Esta rotina retorna 'um'
se for bem-sucedida, e 'zero' em caso contrario.
xdr_bytes(xdrs, sp, sizep, maxsize)
XDR *xdrs;
char **sp;
u_int *sizep, maxsize;
Uma primitiva de filtro que traduz entre strings de bytes
contados e suas representacoes externas. O parametro sp e o
endereco do ponteiro de string. O comprimento da string e
localizado no endereco sizep; strings nao podem ser maiores que
maxsize. Esta rotina retorna 'um' se for bem-sucedida, 'zero'
em caso contrario.
xdr_char(xdrs, cp)
XDR *xdrs;
char *cp;
Uma primitiva de filtro que traduz entre caracteres C e suas
representacoes externas. Esta rotina retorna 'um' se for bem-
sucedida, e 'zero' em caso contrario. Nota: caracteres
codificados nao sao empacotados, e ocupam 4 bytes cada. Para
matrizes de caracteres, vale a pena considerar xdr_bytes(),
xdr_opaque() ou xdr_string().
void
xdr_destroy(xdrs)
XDR *xdrs;
Uma macro que invoca a rotina destrutiva associada com o fluxo
XDR, xdrs. Destruicao geralmente envolve a liberacao de
estruturas de dados privativas associadas com o fluxo. O uso de
xdrs depois de invocar xdr_destroy() e indefinido.
xdr_double(xdrs, dp)
XDR *xdrs;
double *dp;
Uma primitiva de filtro que traduz entre numeros de precisao
dupla do C e suas representacoes externas. Esta rotina retorna
'um' se for bem-sucedida, e 'zero' em caso contrario.
xdr_enum(xdrs, ep)
XDR *xdrs;
enum_t *ep;
Uma primitiva de filtro que traduz entre enums da linguagem C
(atualmente inteiros) e suas representacoes externas. Esta
rotina retorna 'um' se for bem-sucedida, e 'zero' em caso
contrario.
xdr_float(xdrs, fp)
XDR *xdrs;
float *fp;
Uma primitiva de filtro que traduz entre floats da linguagem C e
suas representacoes externas. Esta rotina retorna 'um' se for
bem-sucedida, e 'zero' em caso contrario.
void
xdr_free(proc, objp)
xdrproc_t proc;
char *objp;
Rotina de liberacao generica. O primeiro argumento e a rotina
XDR para o objeto sendo liberado. O segundo argumento e um
ponteiro para o proprio objeto. Nota: o ponteiro passado para
esta rotina n~ao e liberado, mas aquele para o qual ele aponta 'e
liberado (recursivamente).
u_int
xdr_getpos(xdrs)
XDR *xdrs;
Uma macro que invoca a rotina 'pega-posicao' associada com o
fluxo XDR , xdrs. A rotina retorna um inteiro sem sinal, que
indica a posicao do fluxo de bytes XDR. Uma implementacao
desejavel do fluxo XDR e que aritmetica simples funcione com
este numero, apesar de que instancias do fluxo XDR nao precisam
garantir isso.
long *
xdr_inline(xdrs, len)
XDR *xdrs;
int len;
Uma macro que invoca a rotina 'em-linha' associada com o fluxo
XDR , xdrs. A rotina retorna um ponteiro para uma parte
contigua do buffer do fluxo; len e o comprimento em bytes do
buffer desejado. Nota: o ponteiro e um 'cast' para long *.
Atencao: xdr_inline() pode retornar NULL (0) se ele nao puder
alocar uma parte contigua de um buffer. Portanto o comportamento
pode variar entre instancias do fluxo; ele existe em
consideracao a eficiencia.
xdr_int(xdrs, ip)
XDR *xdrs;
int *ip;
Uma primitiva de filtro que traduz entre inteiros do C e suas
representacoes externas. Estas rotinas retornam 'um' se forem
bem-sucedidas, e 'zero' em caso contrario.
xdr_long(xdrs, lp)
XDR *xdrs;
long *lp;
Uma primitiva de filtro que traduz entre inteiros longos do C e
suas representacoes externas. Esta rotina retorna 'um' se for
bem-sucedida, e 'zero' em caso contrario.
void
xdrmem_create(xdrs, addr, size, op)
XDR *xdrs;
char *addr;
u_int size;
enum xdr_op op;
Esta rotina inicializa o objeto de fluxo XDR apontado por xdrs.
Os dados do fluxo sao escritos ou lidos de um pedaco de memoria
na posicao addr , cujo comprimento nao e maior que size bytes. O
op determina a direcao do fluxo XDR ( XDR_ENCODE, XDR_DECODE, ou
XDR_FREE).
xdr_opaque(xdrs, cp, cnt)
XDR *xdrs;
char *cp;
u_int cnt;
Uma primitiva de filtro que traduz entre dados opacos de tamanho
fixo e sua representacao externa. O parametro cp e o endereco
do objeto opaco, e cnt e o seu tamanho em bytes. Esta rotina
retorna 'um' se for bem-sucedida, e 'zero' em caso contrario.
xdr_pointer(xdrs, objpp, objsize, xdrobj)
XDR *xdrs;
char **objpp;
u_int objsize;
xdrproc_t xdrobj;
Como xdr_reference() se excetua pelo fato de serializar
ponteiros NULL, uma vez que xdr_reference() nao o faz. Portanto,
xdr_pointer() pode representar estruturas de dados recursivos,
como arvores binarias ou listas ligadas.
void
xdrrec_create(xdrs, sendsize, recvsize, handle, readit, writeit)
XDR *xdrs;
u_int sendsize, recvsize;
char *handle;
int (*readit) (), (*writeit) ();
Esta rotina inicializa o objeto de fluxo XDR apontado por xdrs.
Os dados do fluxo sao escritos em um buffer de tamanho sendsize;
um valor 'zero' indica que o sistema deve usar um padrao
conveniente. Os dados do fluxo sao lidos de um buffer de
tamanho. recvsize; ele tambem pode ser setado para um padrao
conveniente pela passagem de um valor igual a zero. Quando um
buffer de saida do fluxo esta cheio, writeit e chamado.
Similarmente, quando um buffer de entrada do fluxo esta vazio,
readit e chamado. O comportamento destas duas rotinas e similar
as chamadas de sistema read e write, exceto pelo fato de que
handle e passado para a antiga rotina como o primeiro parametro.
Nota: o campo op do fluxo XDR precisa ser setado pelo chamador.
Atencao: este fluxo XDR implementa um fluxo de registro
intermediario. Portanto, ha bytes adicionais no fluxo para
prover informacoes de limite de registro.
xdrrec_endofrecord(xdrs, sendnow)
XDR *xdrs;
int sendnow;
Esta rotina pode ser invocada somente em fluxos criados por
xdrrec_create(). Os dados no buffer de saida sao marcados como
um registro completo, e o buffer de saida e enviado
opcionalmente se sendnow nao e zero. Esta rotina retorna 'um' se
for bem-sucedida, e 'zero' em caso contrario.
xdrrec_eof(xdrs)
XDR *xdrs;
int empty;
Esta rotina pode ser invocada somente em fluxos criados por
xdrrec_create(). Depois de consumir o resto do registro
corrente no fluxo, esta rotina retorna
xdrrec_skiprecord(xdrs)
XDR *xdrs;
Esta rotina pode ser invocada somente em fluxos criados por
xdrrec_create(). Ele diz a implementacao XDR que o resto do
registro corrente no buffer de entrada do fluxo deve ser
descartado. Esta rotina retorna 'um' se for bem-sucedida, e
'zero' em caso contrario.
xdr_reference(xdrs, pp, size, proc)
XDR *xdrs;
char **pp;
u_int size;
xdrproc_t proc;
Uma primitiva que fornece perseguicao a ponteiros dentro de
estruturas. O parametro pp e o endereco do ponteiro; size e a
estrutura sizeof para o qual *pp aponta; e proc e um
procedimento XDR que filtra a estrutura entre sua forma C e sua
representacao externa. Esta rotina retorna 'um' se for bem-
sucedida, e 'zero' em caso contrario.
Atencao: esta rotina nao entende ponteiros do tipo NULL. Use
xdr_pointer() no lugar.
xdr_setpos(xdrs, pos)
XDR *xdrs;
u_int pos;
Uma macro que invoca a rotina de posicao setada associada com o
fluxo XDR xdrs. O parametro pos e um valor de posicao obtido de
xdr_getpos(). Esta rotina retorna 'um' se o fluxo XDR nao pode
ser reposicionado, e 'zero' em caso contrario.
Atencao: e dificil reposicionar alguns tipos de fluxos XDR ,
assim esta rotina pode falhar com um tipo de fluxo e funcionar
com outro.
xdr_short(xdrs, sp)
XDR *xdrs;
short *sp;
Uma primitiva de filtro que traduz entre inteiros curtos do C e
suas representacoes externas. Esta rotina retorna 'um' se for
bem-sucedida, e 'zero' e caso contrario.
void
xdrstdio_create(xdrs, file, op)
XDR *xdrs;
FILE *file;
enum xdr_op op;
Esta rotina inicializa o objeto de fluxo XDR apontado por xdrs.
Os dados do fluxo XDR sao escritos ou lidos do arquivo de fluxo
padrao de I/O. O parametro op determina a direcao do fluxo XDR
( XDR_ENCODE, XDR_DECODE, ou XDR_FREE).
Atencao: a rotina de destruicao associada com tais rotinas de
chamada de fluxo XDR fflush() sobre o fluxo de arquivo , mas
nunca fclose().
xdr_string(xdrs, sp, maxsize)
XDR
*xdrs;
char **sp;
u_int maxsize;
Uma primitiva de filtro que traduz entre strings C e suas
representacoes externas correspondentes. Strings nao podem ser
maiores que maxsize. Nota: sp e o endereco do ponteiro da
string. Esta rotina retorna 'um' se for bem-sucedida, e
xdr_u_char(xdrs, ucp)
XDR *xdrs;
unsigned char *ucp;
Uma primitiva de filtro que traduz entre caracteres C sem sinal
e suas representacoes externas. Esta rotina retorna 'um' se for
bem-sucedida, e 'zero' em caso contrario.
xdr_u_int(xdrs, up)
XDR *xdrs;
unsigned *up;
Uma primitiva de filtro que traduz entre inteiros sem sinal do C
e suas representacoes externas. Esta rotina retorna 'um' se for
bem-sucedida, e 'zero' em caso contrario.
xdr_u_long(xdrs, ulp)
XDR *xdrs;
unsigned long *ulp;
Uma primitiva de filtro que traduz entre inteiros longos sem
sinal do C e suas representacoes externas. Esta rotina retorna
'um' se for bem-sucedida, e 'zero' em caso contrario.
xdr_u_short(xdrs, usp)
XDR *xdrs;
unsigned short *usp;
Uma primitiva de filtro que traduz entre inteiros curtos sem
sinal do C e suas representacoes externas. Esta rotina retorna
'um' se for bem-sucedida, e 'zero' em caso contrario.
xdr_union(xdrs, dscmp, unp, choices, dfault)
XDR *xdrs;
int *dscmp;
char *unp;
struct xdr_discrim *choices;
bool_t (*defaultarm) (); /* may equal NULL */
Uma primitiva de filtro que traduz entre uma union discriminada
do C e sua representacao externa correspondente. Ela primeiro
traduz o discriminante da uniao localizado em dscmp. Este
discriminante e sempre um enum_t. A seguir, a uniao localizada
em unp e traduzida. O parametro choices e um ponteiro para uma
matriz de estruturas xdr_discrim(). Cada estrutura contem um
par ordenado de [value,proc]. Se o discriminante da uniao e
igual ao valor associado, entao proc e chamado para traduzir a
uniao. O fim da matriz de estrutura xdr_discrim() e denotada por
uma rotina de valor NULL. Se o discriminante nao e encontrado
na matriz choices , entao o procedimento defaultarm e chamado
(se ele nao for NULL). Retorna 'um' se for bem-sucedida, e
'zero' em caso contrario.
xdr_vector(xdrs, arrp, size, elsize, elproc)
XDR *xdrs;
char *arrp;
u_int size, elsize;
xdrproc_t elproc;
Uma primitiva de filtro que traduz entre matrizes de comprimento
fixo e suas representacoes externas correspondentes. O parametro
arrp e o endereco do ponteiro para a matriz, enquanto size e o
elemento 'count' da matriz. O parametro elsize e o sizeof de
cada um dos elementos da matriz, e elproc e um filtro XDR que
traduz entre o formato dos elementos da matriz em C e suas
representacoes externas. Esta rotina retorna 'um' se for bem-
sucedida, e 'zero' em caso contrario.
xdr_void()
Esta rotina sempre retorna 'um'. Ela pode ser passada para
rotinas RPC que requerem um parametro de funcao, onde nada vai
ser feito.
xdr_wrapstring(xdrs, sp)
XDR *xdrs;
char **sp;
Uma primitiva que chama xdr_string(xdrs, sp,MAXUN.UNSIGNED );
onde MAXUN.UNSIGNED e o valor maximo de um inteiro sem sinal.
xdr_wrapstring() esta a mao porque o pacote RPC passa um maximo
de duas rotinas XDR como parametros, e xdr_string(), uma das
primitivas mais frequentemente usadas, requer tres. Retorna
'um' se for bem-sucedida, e 'zero' em caso contrario.
VEJA TAMB'EM
rpc(3N)
Os seguintes manuais:
eXternal Data Representation Standard: Especifica,c~ao do
Protocolo
eXternal Data Representation: Notas T'ecnicas da Sun
XDR: Padr~ao de Representa,c~ao Externa de Dados, RFC1014, Sun
Microsystems, Inc., USC-ISI.
TRADU,C~AO PARA A L'INGUA PORTUGUESA
RUBENS DE JESUS NOGUEIRA <darkseid99@usa.net> (traducao) XXXXXX XX
XXXXX XXXXXXXX <xxxxxxxxxx@xxx.xxx> (revisao)
16 de fevereiro de 1988 XDR(3)