| 22 | } |
| 23 | |
| 24 | buffer_t frame_queue::Read(framesize_t s) |
| 25 | { |
| 26 | if (current_size < s) |
| 27 | FRAME_QUEUE_ERROR; |
| 28 | buffer_t ret; |
| 29 | while (s > 0 && s >= buffer_deque.front().size()) { |
| 30 | s -= buffer_deque.front().size(); |
| 31 | current_size -= buffer_deque.front().size(); |
| 32 | ret.insert(ret.end(), |
| 33 | buffer_deque.front().begin(), |
| 34 | buffer_deque.front().end()); |
| 35 | buffer_deque.pop_front(); |
| 36 | } |
| 37 | if (s > 0) { |
| 38 | ret.insert(ret.end(), |
| 39 | buffer_deque.front().begin(), |
| 40 | buffer_deque.front().begin() + s); |
| 41 | buffer_deque.front().erase(buffer_deque.front().begin(), |
| 42 | buffer_deque.front().begin() + s); |
| 43 | current_size -= s; |
| 44 | } |
| 45 | return ret; |
| 46 | } |
| 47 | |
| 48 | void frame_queue::Write(buffer_t buf) |
| 49 | { |