void Sender::handle_read_file (const ACE_Asynch_Read_File::Result &result) { ACE_Message_Block *mb = &result.message_block (); if (result.error () == 0 && result.bytes_transferred () != 0) { size_t bytes_transferred = result.bytes_transferred (); size_t chunks_chain_size = mb->total_size (); ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Sender::handle_read_file, read %d, ") ACE_TEXT ("chain total %d\n"), bytes_transferred, chunks_chain_size)); this->file_offset_ += static_cast<u_long> (bytes_transferred); this->initiate_write_stream (*mb); // and read more if required if (bytes_transferred == chunks_chain_size) this->initiate_read_file (); } else free_chunks_chain (mb); --this->io_count_; this->check_destroy (); }