void DSession::handle_write_dgram(const TRB_Asynch_Write_Dgram::Result &result) { { ACE_GUARD (ACE_SYNCH_MUTEX, monitor, this->lock_); this->io_count_w_--; int loglevel = cfg.loglevel(); ACE_Message_Block *mb = result.message_block (); size_t xfer_bytes = result.bytes_transferred(); char * last = mb->rd_ptr(); char * first = last - xfer_bytes; u_long error = result.error (); const ACE_Addr & addr = result.remote_address (); ACE_INET_Addr peerAddr ((u_short)0); if (addr.get_type () == peerAddr.get_type ()) { // copy the remote_address_ into addr peerAddr.set_addr (addr.get_addr(), addr.get_size()); } if (cfg.loglevel () == 0) { LogLocker log_lock; //mb.rd_ptr () [0] = '\0'; mb->rd_ptr (mb->rd_ptr () - result.bytes_transferred ()); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) **** %s=%d handle_write_dgram() ****\n"), this->get_name(), this->index())); this->print_address (result.remote_address()); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%s = %d\n"), ACE_TEXT ("bytes_to_write"), result.bytes_to_write ())); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%s = %d\n"), ACE_TEXT ("handle"), result.handle ())); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%s = %d\n"), ACE_TEXT ("bytes_transfered"), result.bytes_transferred ())); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%s = %d\n"), ACE_TEXT ("error"), error)); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("message_block:\n"))); ACE_HEX_DUMP ((LM_DEBUG, first, xfer_bytes)); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("**** end of message ****************\n"))); } else if (error != 0) { LogLocker log_lock; this->print_address (result.remote_address()); ACE_OS::last_error (error); ACE_Log_Msg::instance ()->errnum (error); ACE_Log_Msg::instance ()->log (LM_ERROR, ACE_TEXT ("(%t) %s=%d WRITE ERROR=%d %p\n"), this->get_name (), this->index (), error, ACE_TEXT (":")); } else if (loglevel == 1) { LogLocker log_lock; this->print_address (result.remote_address()); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) %s=%d WRITE=%d bytes ok\n"), this->get_name (), this->index (), result.bytes_transferred ())); } if (error == 0 && result.bytes_transferred () > 0) { this->total_snd_ += result.bytes_transferred (); } else { mb->msg_type (ACE_Message_Block::MB_ERROR); mb->wr_ptr (mb->rd_ptr()); } this->on_data_sent (*mb, peerAddr); if (this->io_count_r_ != 0 || this->io_count_w_ != 0 || this->post_count_ != 0 ) return; } delete this; }
void PSession::trace_write_completion (const TRB_Asynch_Write_Stream::Result &result, const char * type) { { ACE_GUARD (ACE_SYNCH_MUTEX, monitor, this->mutex ()); this->update_last_time(); if (result.success()) this->total_snd_ += result.bytes_transferred (); } int loglevel = this->config().loglevel (); ACE_Message_Block & mb = result.message_block (); char * last = mb.rd_ptr(); char * first = last - result.bytes_transferred(); if (loglevel == 0) { LogLocker log_lock; ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) **** %s=%d handle_write_%s() ****\n"), this->get_name(), this->index(), type)); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("bytes_to_write = %d\n"), result.bytes_to_write ())); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("handle = %d\n"), result.handle ())); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("bytes_transfered = %d\n"), result.bytes_transferred ())); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("error = %d\n"), result.error ())); //ACE_DEBUG ((LM_DEBUG, // ACE_TEXT ("act = %@\n"), // result.act ())); //ACE_DEBUG ((LM_DEBUG, // ACE_TEXT ("success = %d\n"), // result.success ())); //ACE_DEBUG ((LM_DEBUG, // ACE_TEXT ("completion_key = %@\n"), // result.completion_key ())); ACE_HEX_DUMP ((LM_DEBUG, first, result.bytes_transferred(), ACE_TEXT ("message_block "))); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("**** end of message ****************\n"))); } else if (result.error () != 0 ) { LogLocker log_lock; ACE_Log_Msg::instance ()->errnum (result.error ()); ACE_OS::last_error (result.error ()); ACE_Log_Msg::instance ()->log (LM_ERROR, ACE_TEXT ("(%t) %s=%d write_%s err=%d %p\n"), this->get_name (), this->index (), type, (int) result.error(), ACE_TEXT ("ERROR")); } else if ( loglevel ==1 ) { ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) %s=%d write_%s=%d OK\n"), this->get_name (), this->index (), type, result.bytes_transferred ())); } }
void DSession::handle_read_dgram (const TRB_Asynch_Read_Dgram::Result &result) { { ACE_GUARD (ACE_SYNCH_MUTEX, monitor, this->lock_ ); this->io_count_r_--; int loglevel = cfg.loglevel(); ACE_Message_Block *mb = result.message_block (); size_t xfer_bytes = result.bytes_transferred(); char * last = mb->wr_ptr(); char * first = last - xfer_bytes; u_long error = result.error (); if (loglevel == 0) { LogLocker log_lock; ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) **** %s=%d handle_read_dgram() ****\n"), this->get_name(), this->index())); this->print_address (result.remote_address()); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%s = %d\n"), ACE_TEXT ("bytes_to_read"), result.bytes_to_read ())); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%s = %d\n"), ACE_TEXT ("handle"), result.handle ())); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%s = %d\n"), ACE_TEXT ("bytes_transfered"), result.bytes_transferred ())); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("%s = %d\n"), ACE_TEXT ("error"), error)); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("message_block:\n"))); ACE_HEX_DUMP ((LM_DEBUG, first, xfer_bytes)); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("**** end of message ****************\n"))); } else if (error != 0) { LogLocker log_lock; this->print_address (result.remote_address()); ACE_OS::last_error (error); ACE_Log_Msg::instance ()->errnum (error); ACE_Log_Msg::instance ()->log (LM_ERROR, ACE_TEXT ("(%t) %s=%d READ ERROR=%d %p\n"), this->get_name (), this->index (), error, ACE_TEXT (":")); } else if (loglevel == 1) { LogLocker log_lock; this->print_address (result.remote_address()); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) %s=%d READ=%d bytes ok\n"), this->get_name (), this->index (), result.bytes_transferred ())); } do_delay (cfg.delay()); // delay milliseconds if (error == 0 && result.bytes_transferred () > 0) { this->total_rcv_ += result.bytes_transferred (); } else { mb->msg_type (ACE_Message_Block::MB_HANGUP); mb->wr_ptr (mb->rd_ptr()); } this->on_data_received (*mb, static_cast<const ACE_INET_Addr&> (result.remote_address())); if (this->io_count_r_ != 0 || this->io_count_w_ != 0 || this->post_count_ != 0 ) return; } delete this; }
void ReplicaController:: listener () { try { for (char buffer[1024];;) { size_t n = group_->recv (buffer, sizeof (buffer)); ACE_HEX_DUMP ((LM_DEBUG, buffer, n)); TAO_InputCDR cdr (buffer, n); CORBA::OctetSeq object_id; PortableInterceptor::AdapterName adapter_name; CORBA::String_var client_id; CORBA::Long retention_id; CORBA::OctetSeq reply; CORBA::Any state; cdr >> object_id; cdr >> adapter_name; cdr >> client_id.out (); cdr >> retention_id; cdr >> reply; cdr >> state; if (!cdr.good_bit ()) { ACE_DEBUG ((LM_DEBUG, "CDR failed\n")); //@@ what to do? } ACE_DEBUG ((LM_DEBUG, "Received log for %s with rid %i\n", client_id.in (), retention_id)); RecordId rid (client_id.in (), retention_id); CORBA::OctetSeq_var tmp (new CORBA::OctetSeq (reply)); log_.insert (rid, tmp); // Update state. CORBA::TypeCode_var tc = state.type (); if (tc->kind () != CORBA::tk_null) { PortableServer::POA_var poa = resolve_poa (adapter_name); PortableServer::ServantBase_var servant = poa->id_to_servant (object_id); Checkpointable* target = dynamic_cast<Checkpointable*> (servant.in ()); if (target) target->set_state (state); } } } catch (ACE_TMCast::Group::Failed const&) { ACE_DEBUG ((LM_DEBUG, "Group failure. Perhaps, I am alone in the group.\n")); } catch (ACE_TMCast::Group::InsufficienSpace const&) { ACE_DEBUG ((LM_DEBUG, "Group::InsufficienSpace\n")); } orb_->shutdown (0); }