Summary: | SYNC_NONE policy semantics do not conform to the spec | ||
---|---|---|---|
Product: | TAO | Reporter: | Carlos O'Ryan <coryan> |
Component: | ORB | Assignee: | DOC Center Support List (internal) <tao-support> |
Status: | RESOLVED FIXED | ||
Severity: | blocker | CC: | parsons |
Priority: | P3 | ||
Version: | 1.1.14 | ||
Hardware: | All | ||
OS: | All | ||
Bug Depends on: | |||
Bug Blocks: | 132 |
Description
Carlos O'Ryan
2001-04-11 11:50:32 CDT
Add dependency between 132 and 858. BTW, the regression test is already in the repository. Made it a blocker FWIW: it is trivial for me to implement the specified semantics on the 132 branch. Since all I/O is non-blocking in the branch I simply try to write and if the write returns EWOULDBLOCK the message is queued and handle_output() is enabled. Would this be an acceptable implementation? Right, SYNC_NONE policy semantics do not conform to the spec because when this feature was implemented, there was no concept of non-blocking writes. The only way to accomplish this was through timeouts. See tests/Timed_Buffered_Oneways for an example. Once you have non-blocking I/O, the sync strategies can check for EWOULDBLOCK in addition to the existing check for ETIME. If there was a timeout or flow control, the message would get queued up for later delivery. FWIW, this is exactly how things are working in the 132 branch. This bug report will be resolved as soon as 132 is. The regression test "almost" passes, occasionally the application blocks, but I suspect this is more of an scheduling problem than anything else. I'm marking the bug as fixed, we can re-open it later if we need to. |