Proceso de llamadas satisfactorias Cuando una llamada es satisfactoria, el mensaje resultante se propaga al
terminal de salida. Dentro del árbol hay un elemento de nivel superior
denominado NombreInterfaz.NombreOperaciónResponse.
Bajo este tipo se encuentra el tipo de retorno de la operación (denominado
_return) y cada parámetro inout o out. Los parámetros in no se propagan porque
no cambian.
Combinación de parámetros in, inout y out
A continuación se muestra un archivo IDL de ejemplo:
interface
ExampleOne {
string exampleOneOperation(in string inparam, out string outparam, inout string inoutparam);
}
Recibe los parámetros
outparam e
inoutparam bajo el elemento de nivel superior
ExampleOne.exampleOneOperationResponse.
A continuación se muestra un ejemplo
de XML:
<ExampleOne.exampleOneOperationResponse>
<_return>Valor de retorno de la operación</_return>
<outparam>Valor de la aplicación corba</outparam>
</inoutparam>valor cambiado por la aplicación corba<inoutparam>
</ExampleOne.exampleOneOperationResponse>
Parámetros out e inout
A continuación se muestra un archivo IDL de ejemplo:
interface
ExampleTwo {
string exampleTwoOperation(out string outparam, inout string inoutparam);
}
La eliminación del parámetro in no supone ninguna diferencia para
el mensaje que se propaga desde un nodo
CORBARequest, porque los parámetros
in no se propagan.
A continuación se muestra un ejemplo
de XML:
<ExampleTwo.exampleTwoOperationResponse>
<_return>Valor de retorno de la operación</_return>
<outparam>Valor de la aplicación corba</outparam>
</inoutparam>valor cambiado por la aplicación corba<inoutparam>
</ExampleTwo.exampleTwoOperationResponse>
Sólo parámetros in o ningún parámetro
Si la operación no contiene parámetros o sólo contiene parámetros in,
recibirá el valor _return bajo el elemento de nivel superior.
A continuación se muestra un archivo IDL de ejemplo:
interface
ExampleThree {
string exampleThreeOperation(in string inparam);
}
A continuación se muestra un ejemplo
de XML:
<ExampleThree.exampleThreeOperationResponse>
<_return>Valor de retorno de la operación</_return>
</ExampleThree.exampleThreeOperationResponse>
Ningún tipo de retorno (vacío) y ningún parámetro inout ni out
Si la operación que está llamando no tiene tipo de retorno (vacío) y no tiene
parámetros inout ni out, no se devuelve ningún valor desde la aplicación CORBA
para el árbol. En este caso, sólo se crea el elemento de nivel superior.
A continuación se muestra un archivo IDL de ejemplo:
interface
ExampleFour {
void exampleFourOperation(in string inparam);
}
A continuación se muestra un ejemplo
de XML:
<ExampleFour.exampleFourOperationResponse>
</ExampleFour.exampleFourOperationResponse>
Proceso de excepciones definidas por el usuario y excepciones del
sistema CORBA Cuando se produce una excepción definida por el usuario CORBA o una
excepción del sistema CORBA, se propaga un mensaje al terminal de error. Las
excepciones del sistema CORBA tienen una forma estándar y son parecidas a ésta:
En el archivo IDL:
exception SystemException { // descripción del error
unsigned long; // more detail about error
CompletionStatus; // yes, no, maybe
}
En el árbol:
<SystemException>
<minor>10</minor>
<completed>maybe</completed>
</SystemException>
El elemento de nivel superior es el
nombre de la excepción del sistema CORBA que se ha emitido. La estructura de
una excepción definida por el usuario se basa en el IDL para la excepción. A
continuación se muestra un ejemplo:
En el archivo IDL:
exception BadRecord {
string why;
};
En el mensaje:
<BadRecord>
<why>texto del motivo</why>
</BadRecord>
Como puede observar en este ejemplo, la
estructura del mensaje se basa en la excepción y no se cualifica mediante la
operación que se está llamando.