[ace-users] ACE_NonBlocking_Connect_Handler examples?
Steve Huston
shuston at riverace.com
Tue May 19 07:48:34 CDT 2015
Hi Nicole,
The ACE_NonBlocking_Connect_Handler is generally used internally to ACE. ACE_Connector uses it internally when you want non-blocking behavior on the connect. You shouldn’t need to use it in the case you show below.
Please see $ACE_ROOT/tests/Conn_Test.cpp and $ACE_ROOT/examples/APG/Reactor/Client.cpp (goes with APG chapter 7 discussion) for examples of using ACE_Connector.
-Steve
From: ace-users [mailto:ace-users-bounces at list.isis.vanderbilt.edu] On Behalf Of Nicole Neo
Sent: Tuesday, May 19, 2015 5:35 AM
To: ace-users at list.isis.vanderbilt.edu
Subject: [ace-users] ACE_NonBlocking_Connect_Handler examples?
Has anyone managed to use ACE_NonBlocking_Connect_Handler successfully? I have abandoned the combined Priority + Thread pool Reactor approqached (see my previous post) in favour for this but it's very lacking in documentation and examples.
I have written a new ConnectHandler class that implements handle_input(), handle_output() and handle_exception().
I can't manage to link my Connector SVC_Handler implementation with ACE_NonBlocking_Connect_Handler
http://www.dre.vanderbilt.edu/Doxygen/6.1.0/html/libace-doc/a00423.html
ACE_Connector<TCPPort, ACE_SOCK_CONNECTOR> connectortcp;
ACE_NonBlocking_Connect_Handler<TCPPort> nbHandler = ACE_NonBlocking_Connect_Handler<TCPPort>(connectortcp, this, 123);
nbHandler.reactor(ACE_Reactor::instance());
connectortcp.open(ACE_Reactor::instance(), ACE_NONBLOCK);
int connFailure = connectortcp.connect(port, addr, ACE_Synch_Options(ACE_Synch_Options::USE_REACTOR, port->connTimeout));
The connect() does return -1 and errno = EWOULDBLOCK as expected cos the connect is done in a separate thread and the ACE_NON_Blocking_Connect_Handler should be called by the Reactor.
I can see from TCP dump that it has managed to connect successfully but it doesn't seem to do the connect in a separate thread and call the handle_input() method of ACE_NonBlocking_Connect_Handler. Neither does it attempt to retry connecting if I start the server after the first connect attempt has failed.
The regular blocking connect (done in the same thread) that was implemented before works correctly.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.isis.vanderbilt.edu/cgi-bin/mailman/private/ace-users/attachments/20150519/db1b6307/attachment.html>
More information about the ace-users
mailing list