
"Christopher Kohlhoff" <chris@kohlhoff.com> wrote in message news:20060628140024.38036.qmail@web32601.mail.mud.yahoo.com...
I'm thinking it might be helpful in the discussion for me to try to document in precise terms what asio would need from error_code and how it would be used.
What's needed from error_code =============================
Testing for equality:
Given error_code ec1(value1, category1); error_code ec2(value1, category1); error_code ec3(value2, category1); Then ec1 == ec2 evaluates to true ec1 == ec3 evaluates to false
Makes sense.
What asio will say ==================
(For the sake of brevity I will only discuss a couple of error codes, but others will follow the same pattern.)
There will be an error_code object:
namespace boost { namespace asio { namespace error { extern error_code connection_reset; }}}
Yes, but shouldn't that be: extern const error_code connection_reset; You don't want users to be able to change connection_reset to some other value.
On non-POSIX implementations, the initialisation of connection_reset is implementation-defined.
On POSIX implementations, the initialisation of connection_reset shall be:
error_code connection_reset(ECONNRESET, from_errno);
such that both of the following expressions shall evaluate to true:
connection_reset == error_code(ECONNRESET, from_errno) connection_reset.errno_value() == ECONNRESET
Yes.
... More examples
I think we are on track. I'll try to post a revised interface later today.
That's all I can think of for now.
Thanks for the examples. That really helps. --Beman