1 #pragma once 2 3 #include <deque> 4 5 #include "dvlnet/abstract_net.h" 6 7 namespace dvl { 8 namespace net { 9 10 class frame_queue_exception : public dvlnet_exception { 11 public: what()12 const char *what() const throw() override 13 { 14 return "Incorrect frame size"; 15 } 16 }; 17 18 typedef uint32_t framesize_t; 19 20 class frame_queue { 21 public: 22 constexpr static framesize_t max_frame_size = 0xFFFF; 23 24 private: 25 framesize_t current_size = 0; 26 std::deque<buffer_t> buffer_deque; 27 framesize_t nextsize = 0; 28 29 framesize_t size(); 30 buffer_t read(framesize_t s); 31 32 public: 33 bool packet_ready(); 34 buffer_t read_packet(); 35 void write(buffer_t buf); 36 37 static buffer_t make_frame(buffer_t packetbuf); 38 }; 39 40 } // namespace net 41 } // namespace dvl 42