Пример #1
0
static int getData(PluginData* data, char** resBuffer, int* len)
{
    const int maxTry = 1;
    int res = 0;

    if (!data->conn)
        return 0;

    char* resData = (char*)&s_recvBuffer;
    int lenCount = 0;

    memset(resData, 0, 1024);

    for (int i = 0; i < maxTry; ++i)
    {
        bool gotData = false;

        while (VICEConnection_pollRead(data->conn))
        {
            res = VICEConnection_recv(data->conn, resData, ((int)sizeof(s_recvBuffer)) - lenCount, 0);

            if (res == 0)
                break;

            gotData = true;

            resData += res;
            lenCount += res;
        }

        if (gotData)
        {
            *len = lenCount;
            *resBuffer = (char*)&s_recvBuffer;

            return 1;
        }

        // Got some data so read it back
    }

    // got no data

    return 0;
}
static bool get_dataToBuffer(PluginData* data, char* resBuffer, int bufferSize, int* len, int maxTry) {
    int res = 0;
    int lenCount = 0;

    if (!data->conn) {
        return false;
	}

    memset(resBuffer, 0, bufferSize);

    for (int i = 0; i < maxTry; ++i) {
        bool gotData = false;

        //log_debug("trying to get data %d\n", i);

        while (VICEConnection_pollRead(data->conn)) {
            res = VICEConnection_recv(data->conn, resBuffer, bufferSize - lenCount, 0);

            if (res == 0)
                break;

            gotData = true;

            resBuffer += res;
            lenCount += res;
        }

        if (gotData) {
            log_debug("got some data, len %d", lenCount);

            *len = lenCount;
            return true;
        }

        sleepMs(1);
    }

    log_debug("no data from VICE\nn", "");

    return false;
}