summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorjxh <jxh@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-06-12 20:45:21 +0000
committerjxh <jxh@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1998-06-12 20:45:21 +0000
commit2420586b64cbf6ed36c9172e4795f73c30b74e72 (patch)
treedade89cb1ce3f977d3bd21032ce3117274f6ed60 /apps
parent9ff51400eeb46e02e4ff11a1a1ff17cf0deae9ff (diff)
downloadATCD-2420586b64cbf6ed36c9172e4795f73c30b74e72.tar.gz
Stubbed in an implementation for JAWS_Asynch_IO_Handler.
Diffstat (limited to 'apps')
-rw-r--r--apps/JAWS/PROTOTYPE/JAWS/IO_Handler.cpp191
1 files changed, 191 insertions, 0 deletions
diff --git a/apps/JAWS/PROTOTYPE/JAWS/IO_Handler.cpp b/apps/JAWS/PROTOTYPE/JAWS/IO_Handler.cpp
index 72cbde03e4c..0f45097078b 100644
--- a/apps/JAWS/PROTOTYPE/JAWS/IO_Handler.cpp
+++ b/apps/JAWS/PROTOTYPE/JAWS/IO_Handler.cpp
@@ -192,8 +192,199 @@ JAWS_Synch_IO_Handler_Factory::destroy_io_handler (JAWS_IO_Handler *handler)
delete handler;
}
+#if defined (ACE_WIN32)
+
+JAWS_Asynch_IO_Handler::JAWS_Asynch_IO_Handler (JAWS_IO_Handler_Factory *
+ factory)
+ : status_ (0),
+ mb_ (0),
+ handle_ (ACE_INVALID_HANDLE),
+ task_ (0),
+ factory_ (factory)
+{
+ // this->io_->handler (this);
+}
+
+JAWS_Asynch_IO_Handler::~JAWS_Asynch_IO_Handler (void)
+{
+ if (this->mb_)
+ this->mb_->release ();
+ this->mb_ = 0;
+ ACE_OS::close (this->handle_);
+ this->handle_ = ACE_INVALID_HANDLE;
+ this->status_ = 0;
+}
+
+void
+JAWS_Asynch_IO_Handler::accept_complete (ACE_HANDLE handle)
+{
+ // callback into pipeline task, notify that the accept has completed
+ this->handle_ = handle;
+ this->status_ = ACCEPT_OK;
+
+ JAWS_Dispatch_Policy *policy = this->mb_->policy ();
+
+ // Do this so that Thread Per Request can spawn a new thread
+ policy->concurrency ()->activate_hook ();
+}
+
+void
+JAWS_Asynch_IO_Handler::accept_error (void)
+{
+ // callback into pipeline task, notify that the accept has failed
+ this->status_ = ACCEPT_ERROR;
+}
+
+void
+JAWS_Asynch_IO_Handler::read_complete (ACE_Message_Block *data)
+{
+ ACE_UNUSED_ARG (data);
+ // We can call back into the pipeline task at this point
+ // this->pipeline_->read_complete (data);
+ this->status_ = READ_OK;
+}
+
+void
+JAWS_Asynch_IO_Handler::read_error (void)
+{
+ // this->pipeline_->read_error ();
+ this->status_ = READ_ERROR;
+}
+
+void
+JAWS_Asynch_IO_Handler::transmit_file_complete (void)
+{
+ // this->pipeline_->transmit_file_complete ();
+ this->status_ = TRANSMIT_OK;
+}
+
+void
+JAWS_Asynch_IO_Handler::transmit_file_error (int result)
+{
+ ACE_UNUSED_ARG (result);
+ // this->pipeline_->transmit_file_complete (result);
+ this->status_ = TRANSMIT_ERROR;
+}
+
+void
+JAWS_Asynch_IO_Handler::receive_file_complete (void)
+{
+ this->status_ = RECEIVE_OK;
+}
+
+void
+JAWS_Asynch_IO_Handler::receive_file_error (int result)
+{
+ ACE_UNUSED_ARG(result);
+ this->status_ = RECEIVE_ERROR;
+}
+
+void
+JAWS_Asynch_IO_Handler::write_error (void)
+{
+ ACE_DEBUG ((LM_DEBUG, " (%t) error in writing response\n"));
+
+ this->status_ = WRITE_ERROR;
+ this->done ();
+}
+
+void
+JAWS_Asynch_IO_Handler::confirmation_message_complete (void)
+{
+ this->status_ = WRITE_OK;
+}
+
+void
+JAWS_Asynch_IO_Handler::error_message_complete (void)
+{
+ this->status_ = WRITE_OK;
+}
+
+JAWS_IO_Handler_Factory *
+JAWS_Asynch_IO_Handler::factory (void)
+{
+ return this->factory_;
+}
+
+ACE_HANDLE
+JAWS_Asynch_IO_Handler::handle (void)
+{
+ return this->handle_;
+}
+
+void
+JAWS_Asynch_IO_Handler::task (JAWS_Pipeline_Handler *ph)
+{
+ this->task_ = ph;
+}
+
+JAWS_Pipeline_Handler *
+JAWS_Asynch_IO_Handler::task (void)
+{
+ return this->task_;
+}
+
+void
+JAWS_Asynch_IO_Handler::message_block (JAWS_Data_Block *mb)
+{
+ this->mb_ = mb;
+}
+
+JAWS_Data_Block *
+JAWS_Asynch_IO_Handler::message_block (void)
+{
+ return this->mb_;
+}
+
+void
+JAWS_Asynch_IO_Handler::done (void)
+{
+ this->factory ()->destroy_io_handler (this);
+}
+
+int
+JAWS_Asynch_IO_Handler::status (void)
+{
+ return this->status_;
+}
+
+JAWS_IO_Handler *
+JAWS_Asynch_IO_Handler_Factory::create_io_handler (void)
+{
+ JAWS_TRACE ("JAWS_Synch_IO_Handler_Factory::create");
+
+ JAWS_Asynch_IO *io;
+ JAWS_Asynch_IO_Handler *handler;
+
+ io = new JAWS_Asynch_IO;
+ if (io == 0) return 0;
+
+ handler = new JAWS_Asynch_IO_Handler (this);
+ if (handler == 0) delete io;
+
+ return handler;
+}
+
+void
+JAWS_Asynch_IO_Handler_Factory::destroy_io_handler (JAWS_IO_Handler *handler)
+{
+ JAWS_TRACE ("JAWS_Synch_IO_Handler_Factory::destroy");
+ delete handler;
+}
+
+#endif /* ACE_WIN32 */
+
+
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
template class ACE_Singleton<JAWS_Synch_IO_Handler_Factory, ACE_SYNCH_MUTEX>;
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#pragma instantiate ACE_Singleton<JAWS_Synch_IO_Handler_Factory, ACE_SYNCH_MUTEX>
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
+
+#if defined (ACE_WIN32)
+#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
+template class ACE_Singleton<JAWS_Asynch_IO_Handler_Factory, ACE_SYNCH_MUTEX>;
+#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
+#pragma instantiate ACE_Singleton<JAWS_Asynch_IO_Handler_Factory, ACE_SYNCH_MUTEX>
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
+#endif /* ACE_WIN32 */