CORBA::NVList::~NVList (void) { // initialize an iterator and delete each NamedValue ACE_Unbounded_Queue_Iterator<CORBA::NamedValue_ptr> iter (this->values_); for (iter.first (); !iter.done (); iter.advance ()) { CORBA::NamedValue_ptr *nv = 0; (void) iter.next (nv); delete *nv; } this->max_ = 0; // Remove the CDR stream if it is present. delete this->incoming_; }
void CORBA::NVList::_tao_decode (TAO_InputCDR &incoming, int flag) { if (TAO_debug_level > 3) { TAOLIB_DEBUG ((LM_DEBUG, ACE_TEXT ("TAO (%P|%t) : NVList::_tao_decode\n"))); } // Then unmarshal each "in" and "inout" parameter. ACE_Unbounded_Queue_Iterator<CORBA::NamedValue_ptr> i (this->values_); for (i.first (); !i.done (); i.advance ()) { CORBA::NamedValue_ptr *item = 0; (void) i.next (item); CORBA::NamedValue_ptr nv = *item; // check if it is an in or inout parameter // @@ this is where we assume that the NVList is coming from // a Server-side request, we could probably handle both // cases with a flag, but there is no clear need for that. if (ACE_BIT_DISABLED (nv->flags (), flag)) { continue; } if (TAO_debug_level > 3) { TAOLIB_DEBUG ((LM_DEBUG, ACE_TEXT ("TAO (%P|%t) : NVList::_tao_decode - %C\n"), nv->name ()? nv->name () : "(no name given)" )); } CORBA::Any_ptr any = nv->value (); any->impl ()->_tao_decode (incoming ); } }
void CORBA::NVList::_tao_encode (TAO_OutputCDR &cdr, int flag) { ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->lock_); if (this->incoming_ != 0) { if (this->max_ == 0) { // The list is empty aggressively reduce copies and just send // the CDR stream, we assume that // TAO_Server_Request::init_reply // has inserted appropriated padding already to make this // operation correct cdr.write_octet_array_mb (this->incoming_->start ()); return; } // Then unmarshal each "in" and "inout" parameter. ACE_Unbounded_Queue_Iterator<CORBA::NamedValue_ptr> i (this->values_); for (i.first (); !i.done (); i.advance ()) { CORBA::NamedValue_ptr *item = 0; (void) i.next (item); CORBA::NamedValue_ptr nv = *item; if (ACE_BIT_DISABLED (nv->flags (), flag)) { continue; } if (TAO_debug_level > 3) { const char* arg = nv->name (); if (arg == 0) { arg = "(nil)"; } TAOLIB_DEBUG ((LM_DEBUG, ACE_TEXT ("NVList::_tao_encode - parameter <%C>\n"), arg)); } CORBA::TypeCode_ptr tc = nv->value ()->_tao_get_typecode (); (void) TAO_Marshal_Object::perform_append (tc, this->incoming_, &cdr); } delete this->incoming_; this->incoming_ = 0; return; } // The list is already evaluated, we cannot optimize the copies, go // ahead with the slow way to do things. // Then marshal each "in" and "inout" parameter. ACE_Unbounded_Queue_Iterator<CORBA::NamedValue_ptr> i (this->values_); for (i.first (); !i.done (); i.advance ()) { CORBA::NamedValue_ptr *item = 0; (void) i.next (item); CORBA::NamedValue_ptr nv = *item; if (ACE_BIT_DISABLED (nv->flags (), flag)) { continue; } nv->value ()->impl ()->marshal_value (cdr); } }
void Event_Supplier::insert_event_data (CORBA::Any &data, ACE_Unbounded_Queue_Iterator<Schedule_Viewer_Data *> &schedule_iter) { static u_long last_completion = 0; try { Schedule_Viewer_Data **sched_data; if ((schedule_iter.next (sched_data)) && (sched_data) && (*sched_data)) { if ((ACE_OS::strcmp((*sched_data)->operation_name, "high_20") == 0) || (ACE_OS::strcmp((*sched_data)->operation_name, "low_20") == 0) || (ACE_OS::strcmp((*sched_data)->operation_name, "high_1") == 0) || (ACE_OS::strcmp((*sched_data)->operation_name, "low_1") == 0)) { if ((ACE_OS::strcmp((*sched_data)->operation_name, "high_20") == 0) || (ACE_OS::strcmp((*sched_data)->operation_name, "high_1") == 0)) { navigation_.criticality = 1; } else { navigation_.criticality = 0; } navigation_.position_latitude = ACE_OS::rand() % 90; navigation_.position_longitude = ACE_OS::rand() % 180; navigation_.altitude = ACE_OS::rand() % 100; navigation_.heading = ACE_OS::rand() % 180; navigation_.roll = (navigation_.roll >= 180) ? -180 : navigation_.roll + 1; navigation_.pitch = (navigation_.pitch >= 90) ? -90 : navigation_.pitch + 1; navigation_.utilization = (*sched_data)->utilitzation; navigation_.overhead = (*sched_data)->overhead; navigation_.arrival_time = (*sched_data)->arrival_time; navigation_.deadline_time = (*sched_data)->deadline_time; navigation_.completion_time = (*sched_data)->completion_time; navigation_.computation_time = (*sched_data)->computation_time; navigation_.update_data = 0; // because the scheduler data does not supply these values navigation_.utilization = (double) (20.0 + ACE_OS::rand() % 10); navigation_.overhead = (double) (ACE_OS::rand() % 10); data <<= navigation_; } else if ((ACE_OS::strcmp((*sched_data)->operation_name, "high_10") == 0) || (ACE_OS::strcmp((*sched_data)->operation_name, "low_10") == 0) || (ACE_OS::strcmp((*sched_data)->operation_name, "high_5") == 0) || (ACE_OS::strcmp((*sched_data)->operation_name, "low_5") == 0)) { if ((ACE_OS::strcmp((*sched_data)->operation_name, "high_10") == 0) || (ACE_OS::strcmp((*sched_data)->operation_name, "high_5") == 0)) { weapons_.criticality = 1; } else { weapons_.criticality = 0; } weapons_.number_of_weapons = 2; weapons_.weapon1_identifier = CORBA::string_alloc (30); ACE_OS::strcpy (weapons_.weapon1_identifier.inout (),"Photon Torpedoes"); weapons_.weapon1_status =(ACE_OS::rand() % 4) == 0 ? 0 : 1 ; weapons_.weapon2_identifier = CORBA::string_alloc (30); ACE_OS::strcpy (weapons_.weapon2_identifier.inout (),"Quantum Torpedoes"); weapons_.weapon2_status = (ACE_OS::rand() % 4) == 0 ? 0 : 1; weapons_.weapon3_identifier = CORBA::string_alloc (1); ACE_OS::strcpy (weapons_.weapon3_identifier.inout (), ""); weapons_.weapon3_status = 0; weapons_.weapon4_identifier = CORBA::string_alloc (1); ACE_OS::strcpy (weapons_.weapon4_identifier.inout (), ""); weapons_.weapon4_status = 0; weapons_.weapon5_identifier = CORBA::string_alloc (1); ACE_OS::strcpy (weapons_.weapon5_identifier.inout (), ""); weapons_.weapon5_status = 0; weapons_.utilization = (*sched_data)->utilitzation; weapons_.overhead = (*sched_data)->overhead; weapons_.arrival_time = (*sched_data)->arrival_time; weapons_.deadline_time = (*sched_data)->deadline_time; weapons_.completion_time = (*sched_data)->completion_time; weapons_.computation_time = (*sched_data)->computation_time; weapons_.update_data = 0; // because the scheduler data does not supply these values weapons_.utilization = (double) (20.0 + ACE_OS::rand() % 10); weapons_.overhead = (double) (ACE_OS::rand() % 10); data <<= weapons_; } else { ACE_ERROR ((LM_ERROR, "Event_Supplier::insert_event_data:" "unrecognized operation name [%s]", (*sched_data)->operation_name)); } if (last_completion > (*sched_data)->completion_time) last_completion = 0; if ((*sched_data)->completion_time >= last_completion) { ACE_Time_Value pause (0, (*sched_data)->completion_time - last_completion); ACE_OS::sleep (pause); last_completion = (*sched_data)->completion_time; } } else ACE_ERROR ((LM_ERROR, "Event_Supplier::insert_event_data:" "Could Not access scheduling data")); schedule_iter.advance (); if (schedule_iter.done ()) schedule_iter.first (); } catch (const CORBA::Exception&) { ACE_ERROR ((LM_ERROR, "(%t)Error in Event_Supplier::insert_event_data.\n")); } }