📄 readytoread.cc
字号:
#include "monitorclient.ih"bool MonitorClient::ready_to_read(){ //std::cout << "Read! pcount=" << d_pcount << " bufferFill=" << d_bufferFill << " First char: " << *(d_buffer+d_bufferFill) << std::endl; // Buffer pos isn't handled correctly, sometime the buffer isn't parsed onto bufferFill... // unsigned bufferPos = d_bufferFill; d_bufferFill += socket.read(d_buffer+d_bufferFill,d_bufferSize-d_bufferFill); for (char *i = d_buffer+d_bufferPos; i < d_buffer + d_bufferFill; ++i) { if (*i == '(') d_pcount++; else if (*i == ')') { if (!--d_pcount) { // Add buffer to line buffer. d_lineBuffer += std::string(d_buffer,i-d_buffer+1); // Move remaining data to the begining of the buffer. memmove(d_buffer,i+1,d_bufferFill-(i-d_buffer)-1); // Update buffer fill. d_bufferFill -= (i-d_buffer)+1; // Should start parsing at the begining of the buffer. d_bufferPos = 0; //std::cout << "Zero parentises." << std::endl; // Parse the message. parseMessage(d_lineBuffer); // Clear the line buffer. d_lineBuffer.clear(); return true;// break; } } else if (*i == '\n' || *i == '\r') { // Add buffer to line buffer. d_lineBuffer += std::string(d_buffer,i-d_buffer); // removes trailing '\n' or '\r'! // Move remaining data to the begining of the buffer. memmove(d_buffer,i+1,d_bufferFill-(i-d_buffer)-1); // removes heading '\n' or '\r' // Update buffer fill. d_bufferFill -= (i-d_buffer)+1; // Should start parsing at the begining of the buffer. d_bufferPos = 0; //std::cout << "Newline!" << std::endl; // Parse the message. parseMessage(d_lineBuffer); // Clear the line buffer. d_lineBuffer.clear(); d_pcount = 0; return true; //break; } } if (d_bufferFill == d_bufferSize-1) { d_lineBuffer += std::string(d_buffer,d_bufferFill); d_bufferFill = 0; } else if (d_bufferFill > d_bufferSize-1) { throw std::runtime_error("readyToRead(): internal error, seemed to have read past the buffer"); } // Should work... d_bufferPos = d_bufferFill; return true;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -