⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readytoread.cc

📁 2007年机器人足球世界杯3D仿真组亚军
💻 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 + -