On Mon, 28 Feb 2011 18:37:41 -0700, Alex Rousskov wrote:
On 02/28/2011 04:44 PM, Amos Jeffries wrote:
+/// Display the Protocol Type (in upper case).
+inline std::ostream &
+operator <<(std::ostream &os, ProtocolType const &p)
+{
+ if (p < PROTO_UNKNOWN)
+ os << ProtocolType_str[p];
+ return os;
+}
Should we print something when p is PROTO_UNKNOWN or worse? Where
do we
use this operator?
Any debugs dumping objects using the type. Potentially any streamed
output of request/reply status lines.
If the protocol is unset or unknown the ProtocolType value is not
useful. The caller must do the output of any replacement data it
has.
Added documentation.
If the operator is currently used for debugging only, I think we
should
print invalid IDs, to increase the changes we can find the cause of
the
ID-setting bug (and to make the debugging message shape consistent).
If the operator is used for message formation, skipping invalid
protocol
IDs would lead to malformed messages, possibly aggravating the
problem,
so an assert() or Must() may be more appropriate, but printing
nothing
is probably worse than printing an ID.
Not a big deal though and will probably go away (or change) if we
migrate towards an AnyP::Protocol class.
Hmm, okay. Fair points.
How does this work for you:
if (p >= PROTO_NONE && p < PROTO_MAX)
os << ProtocolType_str[p];
else
os << p;
Leaving the compiler value in the stream for review when things go bad.
Amos