void set_qos(OctetSeq& qos, CORBA::Octet value) { qos.length(1); qos[0] = value; }
void Gate:: tracker () { // Time period after which a manual cancellation request is // checked for. // ACE_Time_Value const timeout (0, 500); while (true) { ssize_t n; while (true) { n = socket_.size (timeout); // Check for cancellation request. // { ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, this->mutex_); if (stop_) return; } if (n == -1) { if (errno != ETIME) ACE_OS::abort (); } else break; } CORBA::ULong seqn = ACE_Utils::truncate_cast<CORBA::ULong> (n); OctetSeq seq (seqn); seq.length (seqn); char* buffer = reinterpret_cast<char*> (seq.get_buffer ()); if (socket_.recv (buffer, n) != n) { ACE_ERROR ((LM_ERROR, "recv() reported different size than size()\n")); continue; } TAO_InputCDR cdr (buffer, n); StructuredEvent e; cdr >> e; // Add TTL header to prevent infinite message looping. // ULong i (0); for (; i < e.header.variable_header.length (); ++i) { if (ACE_OS::strcmp (e.header.variable_header[i].name.in (), id_.in ()) == 0) break; } if (i == e.header.variable_header.length ()) { e.header.variable_header.length (i + 1); e.header.variable_header[i].name = string_dup (id_.in ()); } //ACE_DEBUG ((LM_DEBUG, // "adding %s as header #%d\n", // e.header.variable_header[i].name.in (), i)); e.header.variable_header[i].value <<= ULong (1); /* cerr << "IN: " << e.header.fixed_header.event_type.domain_name << "::" << e.header.fixed_header.event_type.type_name << " " << e.header.fixed_header.event_name << endl; */ consumer_->push_structured_event (e); } }