Refactored SocketCAN select() call; fixes #83

Features:
- The driver will throw if it's fed a non-existing or malfunctioning interface during initialization
- When an interface becomes down/disconnected while the node is running, the driver will silently
  exclude it from the IO loop and continue to run on the remaining interfaces.
- When all interfaces become down/disconnected, the driver will throw AllIfacesDownException() from
  SocketCanDriver::select().
This commit is contained in:
Pavel Kirienko
2016-01-28 00:12:27 +03:00
parent cbd36a4a5b
commit 587088bb18
3 changed files with 110 additions and 36 deletions
@@ -29,4 +29,13 @@ public:
int getErrno() const { return errno_; }
};
/**
* This exception is thrown when all available interfaces become down.
*/
class AllIfacesDownException : public Exception
{
public:
AllIfacesDownException() : Exception("All ifaces are down") { }
};
}