⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io.cpp

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 CPP
📖 第 1 页 / 共 2 页
字号:
}voidJAWS_Synch_IO::send_error_message (JAWS_IO_Handler *ioh,                                   const char *buffer,                                   unsigned int length){  this->send_message (ioh, buffer, length);  ioh->error_message_complete ();}voidJAWS_Synch_IO::send_message (JAWS_IO_Handler *ioh,                             const char *buffer,                             unsigned int length){  ACE_SOCK_Stream stream;  stream.set_handle (ioh->handle ());  stream.send_n (buffer, length);}// This only works on Win32#if defined (ACE_WIN32) || defined (ACE_HAS_AIO_CALLS)JAWS_Asynch_IO::JAWS_Asynch_IO (void){}JAWS_Asynch_IO::~JAWS_Asynch_IO (void){  if (this->handle_ != ACE_INVALID_HANDLE)    ACE_OS::closesocket (this->handle_);}voidJAWS_Asynch_IO::accept (JAWS_IO_Handler *ioh,                        ACE_Message_Block *,                        unsigned int){  JAWS_TRACE ("JAWS_Asynch_IO::accept");  ioh->idle ();  JAWS_Data_Block *db = ioh->message_block ();  //ACE_HANDLE listen_handle = db->policy ()->acceptor ()->get_handle ();  //JAWS_Asynch_IO_Handler *aioh =  //  dynamic_cast<JAWS_Asynch_IO_Handler *> (ioh);  size_t bytes_to_read = JAWS_Data_Block::JAWS_DATA_BLOCK_SIZE;  if (db->policy ()->acceptor ()->accept (bytes_to_read, ioh) == -1)    ioh->accept_error ();}voidJAWS_Asynch_IO::read (JAWS_IO_Handler *ioh,                      ACE_Message_Block* mb,                      unsigned int size){  JAWS_TRACE ("JAWS_Asynch_IO::read");  ioh->idle ();  JAWS_Asynch_IO_Handler *aioh =    dynamic_cast<JAWS_Asynch_IO_Handler *> (ioh);  ACE_Asynch_Read_Stream ar;  if (ar.open (*(aioh->handler ()), aioh->handle ()) == -1      || ar.read (*mb, size) == -1)    aioh->read_error ();}voidJAWS_Asynch_IO::receive_file (JAWS_IO_Handler *ioh,                              const char *filename,                              void *initial_data,                              unsigned int initial_data_length,                              unsigned int entire_length){  JAWS_TRACE ("JAWS_Asynch_IO::receive_file");  ioh->idle ();  JAWS_Asynch_IO_Handler *aioh =    dynamic_cast<JAWS_Asynch_IO_Handler *> (ioh);  ACE_Message_Block *mb = 0;  ACE_Filecache_Handle *handle;  ACE_NEW (handle, ACE_Filecache_Handle (filename, entire_length, ACE_NOMAP));  int result = handle->error ();  if (result == ACE_Filecache_Handle::ACE_SUCCESS)    {      ACE_OS::memcpy (handle->address (),                      initial_data,                      initial_data_length);      int bytes_to_read = entire_length - initial_data_length;      ACE_NEW (mb, ACE_Message_Block ((char *)handle->address ()                                      + initial_data_length, bytes_to_read));      if (mb == 0)        {          errno = ENOMEM;          result = -1;        }      else        {          ACE_Asynch_Read_Stream ar;          if (ar.open (*(aioh->handler ()), aioh->handle ()) == -1              || ar.read (*mb, mb->size () - mb->length (), handle) == -1)            result = -1;        }    }  if (result != ACE_Filecache_Handle::ACE_SUCCESS)    {      this->handler_->receive_file_error (result);      delete mb;      delete handle;    }}voidJAWS_Asynch_IO::transmit_file (JAWS_IO_Handler *ioh,                               ACE_HANDLE handle,                               const char *header,                               unsigned int header_size,                               const char *trailer,                               unsigned int trailer_size){  JAWS_TRACE ("JAWS_Asynch_IO::transmit_file");  ioh->idle ();  JAWS_Asynch_IO_Handler *aioh =    dynamic_cast<JAWS_Asynch_IO_Handler *> (ioh);  ACE_Asynch_Transmit_File::Header_And_Trailer *header_and_trailer = 0;  int result = 0;  if (handle != ACE_INVALID_HANDLE)    {      ACE_Message_Block hdr_mb (header, header_size);      ACE_Message_Block trl_mb (trailer, trailer_size);      header_and_trailer =        new ACE_Asynch_Transmit_File::Header_And_Trailer (hdr_mb.duplicate (),                                                          header_size,                                                          trl_mb.duplicate (),                                                          trailer_size);      ACE_Asynch_Transmit_File tf;      if (tf.open (*(aioh->handler ()), aioh->handle ()) == -1          || tf.transmit_file (handle, // file handle                               header_and_trailer, // header and trailer data                               0,  // bytes_to_write                               0,  // offset                               0,  // offset_high                               0,  // bytes_per_send                               0,  // flags                               0 // act                               ) == -1)        result = -1;    }  if (result != 0)    {      ioh->transmit_file_error (result);      delete header_and_trailer;    }}voidJAWS_Asynch_IO::transmit_file (JAWS_IO_Handler *ioh,                               const char *filename,                               const char *header,                               unsigned int header_size,                               const char *trailer,                               unsigned int trailer_size){  int result = 0;  JAWS_TRACE ("JAWS_Asynch_IO::transmit_file");  ioh->idle ();  JAWS_Asynch_IO_Handler *aioh =    dynamic_cast<JAWS_Asynch_IO_Handler *> (ioh);  ACE_Asynch_Transmit_File::Header_And_Trailer *header_and_trailer = 0;  JAWS_Cached_FILE *cf = new JAWS_Cached_FILE (filename);  if (cf->file ()->get_handle () != ACE_INVALID_HANDLE)    {      ACE_Message_Block hdr_mb (header, header_size);      ACE_Message_Block trl_mb (trailer, trailer_size);      header_and_trailer = new ACE_Asynch_Transmit_File::Header_And_Trailer        (hdr_mb.duplicate (), header_size, trl_mb.duplicate (), trailer_size);      ACE_Asynch_Transmit_File tf;      if (tf.open (*(aioh->handler ()), aioh->handle ()) == -1          || tf.transmit_file (cf->file ()->get_handle (), // file handle                               header_and_trailer, // header and trailer data                               0,  // bytes_to_write                               0,  // offset                               0,  // offset_high                               0,  // bytes_per_send                               0,  // flags                               cf // act                               ) == -1)        result = -1;    }  if (result != 0)    {      ioh->transmit_file_error (result);      delete header_and_trailer;      delete cf;    }}voidJAWS_Asynch_IO::send_confirmation_message (JAWS_IO_Handler *ioh,                                           const char *buffer,                                           unsigned int length){  this->send_message (ioh, buffer, length, CONFIRMATION);}voidJAWS_Asynch_IO::send_error_message (JAWS_IO_Handler *ioh,                                    const char *buffer,                                    unsigned int length){  this->send_message (ioh, buffer, length, ERROR_MESSAGE);}voidJAWS_Asynch_IO::send_message (JAWS_IO_Handler *ioh,                              const char *buffer,                              unsigned int length,                              long act){  ioh->idle ();  JAWS_Asynch_IO_Handler *aioh =    dynamic_cast<JAWS_Asynch_IO_Handler *> (ioh);  ACE_Message_Block *mb;  ACE_NEW (mb, ACE_Message_Block (buffer, length));  if (mb == 0)    {      this->handler_->error_message_complete ();      return;    }  ACE_Asynch_Write_Stream aw;  if (aw.open (*(aioh->handler ()), aioh->handle ()) == -1      || aw.write (*mb, length, (void *) act) == -1)    {      mb->release ();      if (act == CONFIRMATION)        ioh->confirmation_message_complete ();      else        ioh->error_message_complete ();    }}voidJAWS_Asynch2_IO::accept (JAWS_IO_Handler *,                         ACE_Message_Block *,                         unsigned int){}#endif /* ACE_WIN32 */#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)template class ACE_Singleton<JAWS_Synch_IO, ACE_SYNCH_MUTEX>;  #if defined (ACE_WIN32) || defined (ACE_HAS_AIO_CALLS)  template class ACE_Singleton<JAWS_Asynch_IO, ACE_SYNCH_MUTEX>;  template class ACE_Singleton<JAWS_Asynch2_IO, ACE_SYNCH_MUTEX>;  #endif /* defined (ACE_WIN32) || defined (ACE_HAS_AIO_CALLS)*/#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)#pragma instantiate  ACE_Singleton<JAWS_Synch_IO, ACE_SYNCH_MUTEX>  #if defined (ACE_WIN32) || defined (ACE_HAS_AIO_CALLS)  #pragma instantiate  ACE_Singleton<JAWS_Asynch_IO, ACE_SYNCH_MUTEX>  #pragma instantiate  ACE_Singleton<JAWS_Asynch2_IO, ACE_SYNCH_MUTEX>  #endif /* defined (ACE_WIN32) || defined (ACE_HAS_AIO_CALLS)*/#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -