int Connector::connect (ACE_HANDLE &client_handle, ACE_HANDLE &server_handle, int run_receiver_thread) { // // Create a connection and a receiver to receive messages on the // connection. // Pipe pipe; int result = 0; for (int i = 0; i < pipe_open_attempts; ++i) { result = pipe.open (); if (result == 0) break; if (result == -1) ACE_OS::sleep (pipe_retry_timeout); } ACE_TEST_ASSERT (result == 0); ACE_UNUSED_ARG (result); Receiver *receiver = new Receiver (this->thread_manager_, pipe.write_handle (), this->nested_upcalls_); // Either the receiver is threaded or register it with the Reactor. if (run_receiver_thread) result = receiver->activate (); else { result = this->reactor_.register_handler (pipe.write_handle (), receiver, ACE_Event_Handler::READ_MASK); // The reference count on the receiver was increased by the // Reactor. ACE_Event_Handler_var safe_receiver (receiver); } ACE_TEST_ASSERT (result == 0); ACE_UNUSED_ARG (result); client_handle = pipe.read_handle (); server_handle = pipe.write_handle (); if (debug) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) New connection: client handle = %d, ") ACE_TEXT ("server handle = %d\n"), client_handle, server_handle)); return 0; }