File tree Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -21,7 +21,7 @@ class SerialTransport: public ITransport {
2121 size_t write (const uint8_t * data, size_t size) override {
2222 _stream->write (data, size);
2323 return size;
24- }
24+ }
2525
2626 size_t read (uint8_t * buffer, size_t size) override {
2727 _stream->setTimeout (0 );
Original file line number Diff line number Diff line change @@ -163,8 +163,17 @@ class RpcDecoder {
163163
164164 inline bool buffer_empty () const { return _bytes_stored == 0 ;}
165165
166+ // This is a blocking send, under the assumption _transport.write will always succeed eventually
166167 inline size_t send (const uint8_t * data, const size_t size) {
167- return _transport.write (data, size);
168+
169+ size_t offset = 0 ;
170+
171+ while (offset < size) {
172+ size_t bytes_written = _transport.write (data + offset, size - offset);
173+ offset += bytes_written;
174+ }
175+
176+ return offset;
168177 }
169178
170179 size_t pop_packet (uint8_t * buffer, size_t buffer_size) {
You can’t perform that action at this time.
0 commit comments