ssize_t NDDS_Log_Backend::log (ACE_Log_Record &log_record) { Log_Record *instance (0); instance = Log_RecordTypeSupport::create_data_ex (DDS_BOOLEAN_FALSE); if (instance == 0) { ACE_ERROR ((LM_EMERGENCY, ACE_TEXT ("Unable to create data sample for log record\n"))); return 0; } instance->node = this->node_.c_str (); instance->pid = log_record.pid (); instance->pid = log_record.pid (); instance->message = ACE_TEXT_ALWAYS_CHAR (log_record.msg_data ()); DDS_ReturnCode_t const retval = this->log_record_writer_->write (*instance, DDS_HANDLE_NIL); if (retval != DDS_RETCODE_OK) { ACE_ERROR ((LM_EMERGENCY, ACE_TEXT ("Unable to write log record to DDS\n"))); return 0; } if (instance != 0) { Log_RecordTypeSupport::delete_data_ex (instance, DDS_BOOLEAN_FALSE); } return log_record.msg_data_len (); }
int operator<< (ACE_OutputCDR &cdr, const ACE_Log_Record &log_record) { // The written message length can't be more than 32 bits (ACE_CDR::ULong) // so reduce it here if needed. ACE_CDR::ULong u_msglen = ACE_Utils::truncate_cast<ACE_CDR::ULong> (log_record.msg_data_len ()); // Insert each field from <log_record> into the output CDR stream. cdr << ACE_CDR::Long (log_record.type ()); cdr << ACE_CDR::Long (log_record.pid ()); cdr << ACE_CDR::LongLong (log_record.time_stamp ().sec ()); cdr << ACE_CDR::Long (log_record.time_stamp ().usec ()); cdr << u_msglen; #if defined (ACE_USES_WCHAR) cdr.write_wchar_array (log_record.msg_data (), u_msglen); #else cdr.write_char_array (log_record.msg_data (), u_msglen); #endif /* ACE_USES_WCHAR */ return cdr.good_bit (); }