Closed GoogleCodeExporter closed 9 years ago
This is how it used to be, in r484 for example flags is set to MSG_DONTWAIT.
The problem being that non-blocking on the receive is not portable to Windows
platforms and so it is preferred to set the entire socket non-blocking.
Also, blocking sockets break the concept of state management by time. There is
no ability to drop out of the receive to send a NAK, this would be dependent
upon extra threading as per OpenPGM version 1.
So the real issue is that socket non-blocking is set in the socket option
PGM_NOBLOCK and not in pgm_socket after creating the underlying sockets.
Original comment by fnjo...@gmail.com
on 7 Apr 2011 at 1:34
The major design question around blocking sockets is how should transmission be
handled. Reception requires non-blocking sockets always in order for time
management. Transmission is a mixed bag, for sending NAKs the transmission is
handled in the receiver and so non-blocking is preferred, but using
non-blocking sends in pgm_send et al would be non ideal with a select() loop
waiting for non-blocking send.
Original comment by fnjo...@gmail.com
on 7 Apr 2011 at 2:13
Please try trunk which defaults to non-blocking recv sockets internally but
pgm_recv et al will show blocking semantics. Passing the flag MSG_DONTWAIT
will convert to non-blocking semantics on Unix platforms.
http://code.google.com/p/openpgm/source/checkout
Original comment by fnjo...@gmail.com
on 7 Apr 2011 at 2:21
Closing, presumed fixed with trunk modifications.
Original comment by fnjo...@gmail.com
on 5 Oct 2011 at 3:21
Original issue reported on code.google.com by
harrison...@gmail.com
on 6 Apr 2011 at 6:42