Implemented priority queue

This commit is contained in:
Alessandro Ranellucci 2015-01-04 18:17:15 +01:00
parent b4a6d0acee
commit 16939b80e6
5 changed files with 65 additions and 27 deletions

View file

@ -19,8 +19,8 @@ class GCodeSender : private boost::noncopyable {
GCodeSender();
~GCodeSender();
bool connect(std::string devname, unsigned int baud_rate);
void send(const std::vector<std::string> &lines);
void send(const std::string &s);
void send(const std::vector<std::string> &lines, bool priority = false);
void send(const std::string &s, bool priority = false);
void disconnect();
bool error_status() const;
bool is_connected() const;
@ -38,14 +38,17 @@ class GCodeSender : private boost::noncopyable {
bool error;
mutable boost::mutex error_mutex;
// this mutex guards queue, priqueue, can_send, queue_paused, sent, last_sent
mutable boost::mutex queue_mutex;
std::queue<std::string> queue;
std::queue<std::string> queue, priqueue;
bool can_send;
bool queue_paused;
size_t sent;
std::string last_sent;
void set_baud_rate(unsigned int baud_rate);
void set_error_status(bool e);
void do_send(const std::string &line);
void do_close();
void do_read();
void on_read(const boost::system::error_code& error, size_t bytes_transferred);