void execCommand(string& str) { cdb::StringUtils::trim(str); if (str.empty()) return; if (str == "exit" || str == "quit") { g_keepGoing = false; return; } vector< string > tokens; cdb::StringUtils::split(str, " ", tokens); if (tokens.size() == 2 && tokens[0] == "start") { int threadCount = boost::lexical_cast<int>(tokens[1]); loadTest(threadCount); return; } int ret; uint16_t length = str.length(); ret = g_sock.send((const char*)& length, 2); if (ret != 2) THROW("Failed to send command's length"); ret = g_sock.send(str.c_str(), length); if (ret != length) THROW("Failed to send command"); ret = g_sock.receive((char*) &length, 2); if (ret != 2) THROW("Failed to receive response length"); if (g_buffer.size() < length) { g_buffer.extend(length - g_buffer.size() + 1); } g_buffer.clear(); ret = g_sock.receive(g_buffer.raw(), length); if (ret != length) THROW("Failed to receive response"); g_buffer.commit(length); g_buffer.closeText(); cout << g_buffer.raw() << endl; }
static void execCommand(Sock& sock, string& str, Buffer& buffer) { int ret; uint16_t length = str.length(); ret = sock.send((const char*)& length, 2); if (ret != 2) THROW("Failed to send command's length"); ret = sock.send(str.c_str(), length); if (ret != length) THROW("Failed to send command"); ret = sock.receive((char*) &length, 2); if (ret != 2) THROW("Failed to receive response length"); if (buffer.size() < length) { buffer.extend(length - buffer.size() + 1); } buffer.clear(); ret = sock.receive(buffer.raw(), length); if (ret != length) THROW("Failed to receive response"); buffer.commit(length); buffer.closeText(); }