diff --git a/src/StreamBusInterface.cc b/src/StreamBusInterface.cc index 5254307..960ac0e 100644 --- a/src/StreamBusInterface.cc +++ b/src/StreamBusInterface.cc @@ -20,13 +20,7 @@ #include "StreamBusInterface.h" #include "StreamError.h" -const char* StreamIoStatusStr[] = { - "StreamIoSuccess", - "StreamIoTimeout", - "StreamIoNoReply", - "StreamIoEnd", - "StreamIoFault" -}; +StreamIoStatusStrClass StreamIoStatusStr; StreamBusInterfaceRegistrarBase* StreamBusInterfaceRegistrarBase::first; diff --git a/src/StreamBusInterface.h b/src/StreamBusInterface.h index 74dfcad..f77ea35 100644 --- a/src/StreamBusInterface.h +++ b/src/StreamBusInterface.h @@ -21,13 +21,26 @@ #define StreamBusInterface_h #include +#include enum StreamIoStatus { StreamIoSuccess, StreamIoTimeout, StreamIoNoReply, StreamIoEnd, StreamIoFault }; -extern const char* StreamIoStatusStr[]; +class StreamIoStatusStrClass { +public: + const char* operator [] (int index) { + switch (index) { + case StreamIoSuccess: return "StreamIoSuccess"; + case StreamIoTimeout: return "StreamIoTimeout"; + case StreamIoNoReply: return "StreamIoNoReply"; + case StreamIoEnd: return "StreamIoEnd"; + case StreamIoFault: return "StreamIoFault"; + default: return "illegal status"; + } + } +} extern StreamIoStatusStr; class StreamBusInterface { @@ -89,6 +102,9 @@ public: bool busDisconnect() { return businterface && businterface->disconnectRequest(); } + void busPrintStatus(StreamBuffer& buffer) { + if (businterface) businterface->printStatus(buffer); + } }; private: @@ -137,6 +153,7 @@ protected: virtual bool connectRequest(unsigned long connecttimeout_ms); virtual bool disconnectRequest(); virtual void finish(); + virtual void printStatus(StreamBuffer& buffer) {}; // pure virtual virtual bool lockRequest(unsigned long timeout_ms) = 0;