/* * This file was generated by orbit-idl - DO NOT EDIT! */ #include #include "echo.h" #define GET_ATOM(x) G_STMT_START{ GIOP_RECV_BUFFER(_ORBIT_recv_buffer)->decoder(&x, (GIOP_RECV_BUFFER(_ORBIT_recv_buffer)->cur), sizeof(x)); ((guchar *)GIOP_RECV_BUFFER(_ORBIT_recv_buffer)->cur) += sizeof(x); }G_STMT_END Echo Echo_echoString(Echo _obj, const CORBA_char * astring, CORBA_long * anum, CORBA_Environment * ev) { GIOP_unsigned_long _ORBIT_request_id; GIOPSendBuffer *_ORBIT_send_buffer; GIOPRecvBuffer *_ORBIT_recv_buffer; static const struct { CORBA_unsigned_long len; char opname[11]; } _ORBIT_operation_name_data = { 11, "echoString" }; static const struct iovec _ORBIT_operation_vec = {(gpointer) & _ORBIT_operation_name_data, 15}; Echo _ORBIT_retval; GIOPConnection *_cnx; if (_obj->servant && _obj->vepv && Echo__classid) { return ((POA_Echo__epv *) _obj->vepv[Echo__classid])->echoString(_obj->servant, astring, anum, ev); } _cnx = ORBit_object_get_connection(_obj); retry_request: _ORBIT_request_id = giop_get_request_id(); if ((_cnx == NULL) || (_obj->active_profile == NULL)) { CORBA_exception_set_system(ev, ex_CORBA_COMM_FAILURE, CORBA_COMPLETED_NO); return _ORBIT_retval; } _ORBIT_send_buffer = giop_send_request_buffer_use(_cnx, NULL, _ORBIT_request_id, CORBA_TRUE, &(_obj->active_profile->object_key_vec), &_ORBIT_operation_vec, &ORBit_default_principal_iovec); if (!_ORBIT_send_buffer) { CORBA_exception_set_system(ev, ex_CORBA_COMM_FAILURE, CORBA_COMPLETED_NO); return _ORBIT_retval; } /* marshal parameter astring */ { GIOP_unsigned_long len = astring ? (strlen(astring) + 1) : 0; giop_message_buffer_do_alignment(GIOP_MESSAGE_BUFFER(_ORBIT_send_buffer), 4); giop_send_buffer_append_mem_indirect(GIOP_SEND_BUFFER(_ORBIT_send_buffer), &len, sizeof(len)); if (astring) giop_message_buffer_append_mem(GIOP_MESSAGE_BUFFER(_ORBIT_send_buffer), astring, len); } giop_send_buffer_write(_ORBIT_send_buffer); giop_send_buffer_unuse(_ORBIT_send_buffer); _ORBIT_recv_buffer = giop_recv_reply_buffer_use_2(ORBit_object_get_connection(_obj), _ORBIT_request_id, TRUE); if (_ORBIT_recv_buffer == NULL || _ORBIT_recv_buffer->message_buffer.message_header.message_type != GIOP_REPLY) { CORBA_exception_set_system(ev, ex_CORBA_COMM_FAILURE, CORBA_COMPLETED_MAYBE); if (_ORBIT_recv_buffer) giop_recv_buffer_unuse(_ORBIT_recv_buffer); return _ORBIT_retval; } if (_ORBIT_recv_buffer->message.u.reply.reply_status != GIOP_NO_EXCEPTION) { if (_ORBIT_recv_buffer->message.u.reply.reply_status == GIOP_LOCATION_FORWARD) { if (_obj->forward_locations != NULL) ORBit_delete_profiles(_obj->forward_locations); _obj->forward_locations = ORBit_demarshal_IOR(_ORBIT_recv_buffer); _cnx = ORBit_object_get_forwarded_connection(_obj); giop_recv_buffer_unuse(_ORBIT_recv_buffer); goto retry_request; } else { ORBit_handle_exception(_ORBIT_recv_buffer, ev, NULL, _obj->orb); giop_recv_buffer_unuse(_ORBIT_recv_buffer); return _ORBIT_retval; } } if (giop_msg_conversion_needed(GIOP_MESSAGE_BUFFER(_ORBIT_recv_buffer))) { /* demarshal return value */ _ORBIT_retval = ORBit_demarshal_object(_ORBIT_recv_buffer, (_obj->orb)); /* demarshal parameter *anum */ GIOP_RECV_BUFFER(_ORBIT_recv_buffer)->cur = ALIGN_ADDRESS(GIOP_RECV_BUFFER(_ORBIT_recv_buffer)->cur, 4); GET_ATOM(*anum); } else { /* demarshal return value */ _ORBIT_retval = ORBit_demarshal_object(_ORBIT_recv_buffer, (_obj->orb)); /* demarshal parameter *anum */ GIOP_RECV_BUFFER(_ORBIT_recv_buffer)->cur = ALIGN_ADDRESS(GIOP_RECV_BUFFER(_ORBIT_recv_buffer)->cur, 4); *anum = *((CORBA_long *) GIOP_RECV_BUFFER(_ORBIT_recv_buffer)->cur); ((char *) GIOP_RECV_BUFFER(_ORBIT_recv_buffer)->cur) += sizeof(CORBA_long); } giop_recv_buffer_unuse(_ORBIT_recv_buffer); ev->_major = CORBA_NO_EXCEPTION; return _ORBIT_retval; }