1.2- Uniones de Datos

Demasiado sencillo para ser verdad, en si la unión de datos como su nombre lo dice, une o enlaza dos registros de variables para que puedan ser utilizados de una sola forma, pero en distintos métodos y obtener una salida de dos en una.

Las uniones de XDR son diferentes a las de C, ya que tienen un discriminante. Su sintaxis es la siguiente:

union tipo_union switch (int discriminante) {
case valor1: declaración 1;
case valor2: declaración 2;
………………………
default: declaración N;
};
Hay que resaltar que una de las declaraciones de la unión puede ser de tipo void, lo que indica que en ese caso no hay datos asociados, o sea, no se transmitiría nada al enviar esa unión (sólo el valor del discriminante, claro). El único otro lugar donde puede aparecer un void en XDR es en la definición del argumento o del valor devuelto por una función. Este tipo XDR se proyecta en C como un tipo struct que contiene un tipo unión de C:
struct tipo_union {
int discriminante;
union {
declaración 1;
declaración 2;
…………..
declaración N;
} tipo_union_u;
};
Nótese que en el código del cliente y del servidor habría que especificar el campo tipo_union_u para acceder a los campos más internos. Asimismo, si uno de los casos tiene asociada una definición void, en C desaparecería directamente esa declaración. Para aclarar el uso del tipo union de XDR, se presenta, a continuación, un ejemplo. Supóngase que se quiere definir un servicio RPC denominado read, que devuelve un valor Booleano que indica si la operación se realizó con éxito. En caso afirmativo, la función devuelve los datos leídos. El tipo XDR que define el valor devuelto por esa función de servicio podría ser el siguiente:
union read_res switch (bool exito) {
case FALSE: void;
case TRUE: opaque datos<>;
};
Nótese que, suponiendo que tenemos una variable de ese tipo llamada resultado, para acceder a los datos habría que especificar lo siguiente:
resultado.read_res_u.datos
Fuente Original:
http://www.mitecnologico.com/Main/UnionesDeDatosUnion


No hay comentarios:

Publicar un comentario