?? 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 + -