I'm looking at using IC to generate an Erlang:C interface between 2 nodes
in a network... all is going OK apart from one scenario (so far):
I've got 1 Erlang genserver providing a generic set of client access
I've got 2 'C' servers, one of which implements the full IDL-specified
interface and one which implements a subset...
For the server that implements the full IDL-specified interface, everything
For the server that implements the subset of the IDL-specified interface, I
want the client
access function call to be informed if the function is not implemented by
As far as I can see, the example C server code does not pass back
CORBA_SYSTEM_EXCEPTION back to the client:
status = ei_receive_encoded(env->_fd, &env->_inbuf, &env->_inbufsz, &msg,
case ERL_REG_SEND :
/* do transaction with fd */
case CORBA_NO_EXCEPTION: /* Success */
case CORBA_SYSTEM_EXCEPTION: /* System exception */
printf("Request failure, reason : %s\n",(char *)
default: /* Should not come here */
env->_major is set to CORBA_SYSTEM_EXCEPTION because
whatever_module__switch() does not implement the function. env->_iout count
appears to be set to 0.
Shouldn't there be some kind of ei_send_encoded() call to return an error
to the client?
NB. I don't want to use a timeout on the client side because a) I don't
know the maximum time that valid function calls will take and b) the server
has detected an error and should be capable of sending an error response.