示例#1
0
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;
}
示例#2
0
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();
}