Peter Hogfeldt 2003-08-14 PA1 IC C BACK-ENDS IMPROVEMENTS 1 C CLIENT 1.1 Cast Each oneway operation roughly consists of the following code parts: - encoding the cast message - setting index of the out buffer to zero (1.1.1) - encoding the magic (1.1.1) - encoding a tuple header of size 2 (1.1.1) - encoding '$gen_cast' (1.1.1) - encoding the operation parameters (1.1.2) - sending the cast message (1.1.3) Only (1.1.2) is unique for the operation in question. 1.1.1 Todo Define functions: int oe_ei_encode_cast(CORBA_environment *) that performs (1.1.1) int oe_ei_cast(CORBA_environment *) that performs (1.1.3) This will reduce code size. As compiler options oe_ei_encode_cast(), and oe_ei_cast() may be replaced by user defined functions. 1.2 Call Each (non-oneway) operation roughly consists of the following code parts: - encoding the call message - setting index of the out buffer to zero (1.2.1) - encoding the magic (1.2.1) - encoding a tuple header of size 3 (1.2.1) - encoding '$gen_call' (1.2.1) - encoding a tuple header of size 2 (1.2.1) - encoding the from pid (1.2.1) - encoding the unique ref (1.2.1) - encoding the operation parameters (1.2.2) - sending the call message (1.2.3) - receiving the reply message (1.2.3) - decoding the reply parameters (1.2.4) Only (1.2.2) and (1.2.4) are unique for the operation in question. 1.2.1 Todo Define functions: int oe_ei_encode_send(CORBA_environment *) that performs (1.2.1) int oe_ei_send_and_receive(CORBA_environment *) that performs (1.2.3) This will reduce code size. As compiler options oe_ei_encode_send(), and oe_ei_send_and_receive() may be replaced by user defined function. 2 SERVER We do not provide any code for receiving operation messages, execute operations, and send the result back. Should we not do that?