| 40 | : transport_(transport), model_(model) {} |
| 41 | |
| 42 | void IpcClient::poll() { |
| 43 | while (transport_.has_data()) { |
| 44 | try { |
| 45 | auto header = oid::MessageType{}; |
| 46 | oid::MessageDecoder{transport_}.read(header); |
| 47 | dispatch(header); |
| 48 | } catch (const std::runtime_error&) { // SocketTimeoutError, base catch |
| 49 | return; // cross-shared-lib RTTI-safe; drop the partial message |
| 50 | } |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | void IpcClient::dispatch(oid::MessageType header) { |
| 55 | using enum oid::MessageType; |