コード例 #1
0
/**
 * @brief Get the names of the peers of a group
 */
QList<QString> Core::getGroupPeerNames(int groupId) const
{
    if (!tox)
    {
        qWarning() << "Can't get group peer names, tox is null";
        return {};
    }

    uint32_t nPeers = getGroupNumberPeers(groupId);
    if (nPeers == std::numeric_limits<uint32_t>::max())
    {
        qWarning() << "getGroupPeerNames: Unable to get number of peers";
        return {};
    }

    // TODO: Change to std::vector
    std::unique_ptr<uint8_t[][TOX_MAX_NAME_LENGTH]> namesArray{
        new uint8_t[nPeers][TOX_MAX_NAME_LENGTH]};

    std::unique_ptr<uint16_t[]> lengths{new uint16_t[nPeers]};
    TOX_ERR_CONFERENCE_PEER_QUERY error;

    uint32_t count = tox_conference_peer_count(tox, groupId, &error);
    if (!parsePeerQueryError(error))
    {
        return {};
    }

    if (count != nPeers)
    {
        qWarning() << "getGroupPeerNames: Unexpected peer count";
        return {};
    }

    QList<QString> names;
    for (uint32_t i = 0; i < nPeers; ++i)
    {
        lengths[i] = tox_conference_peer_get_name_size(tox, groupId, i, &error);
        bool ok = tox_conference_peer_get_name(tox, groupId, i, namesArray[i], &error);
        if (parsePeerQueryError(error) && ok)
        {
            names.push_back(CString::toString(namesArray[i], lengths[i]));
        }
    }

    return names;
}
コード例 #2
0
ファイル: core.cpp プロジェクト: mpxc/qTox
/**
 * @brief Get the name of a peer of a group
 */
QString Core::getGroupPeerName(int groupId, int peerId) const
{
    uint8_t nameArray[TOX_MAX_NAME_LENGTH];
    TOX_ERR_CONFERENCE_PEER_QUERY error;
    size_t length = tox_conference_peer_get_name_size(tox, groupId, peerId, &error);
    if (!parsePeerQueryError(error)) {
        return QString{};
    }

    bool success = tox_conference_peer_get_name(tox, groupId, peerId, nameArray, &error);
    if (!parsePeerQueryError(error) || !success) {
        qWarning() << "getGroupPeerName: Unknown error";
        return QString{};
    }

    return ToxString(nameArray, length).getQString();
}
コード例 #3
0
ファイル: twc-utils.c プロジェクト: haavardp/tox-weechat
/**
 * Return the name of a group chat peer as a null terminated string. Must be
 * freed.
 */
char *
twc_get_peer_name_nt(Tox *tox, int32_t group_number, int32_t peer_number)
{
    uint8_t name[TOX_MAX_NAME_LENGTH + 1] = {0};
    TOX_ERR_CONFERENCE_PEER_QUERY err = TOX_ERR_CONFERENCE_PEER_QUERY_OK;

    int length =
        tox_conference_peer_get_name_size(tox, group_number, peer_number, &err);
    if ((err == TOX_ERR_CONFERENCE_PEER_QUERY_OK) &&
        (length <= TOX_MAX_NAME_LENGTH))
    {
        tox_conference_peer_get_name(tox, group_number, peer_number, name,
                                     &err);
        if (err == TOX_ERR_CONFERENCE_PEER_QUERY_OK)
            return twc_null_terminate(name, length);
        else
            return "<unknown>";
    }
    else
        return "<unknown>";
}
コード例 #4
0
ファイル: core.cpp プロジェクト: mpxc/qTox
/**
 * @brief Get the names of the peers of a group
 */
QStringList Core::getGroupPeerNames(int groupId) const
{
    if (!tox) {
        qWarning() << "Can't get group peer names, tox is null";
        return {};
    }

    uint32_t nPeers = getGroupNumberPeers(groupId);
    if (nPeers == std::numeric_limits<uint32_t>::max()) {
        qWarning() << "getGroupPeerNames: Unable to get number of peers";
        return {};
    }

    TOX_ERR_CONFERENCE_PEER_QUERY error;
    uint32_t count = tox_conference_peer_count(tox, groupId, &error);
    if (!parsePeerQueryError(error)) {
        return {};
    }

    if (count != nPeers) {
        qWarning() << "getGroupPeerNames: Unexpected peer count";
        return {};
    }

    QStringList names;
    for (uint32_t i = 0; i < nPeers; ++i) {
        uint8_t name[TOX_MAX_NAME_LENGTH] = {0};
        size_t length = tox_conference_peer_get_name_size(tox, groupId, i, &error);
        bool ok = tox_conference_peer_get_name(tox, groupId, i, name, &error);
        if (ok && parsePeerQueryError(error)) {
            names.append(ToxString(name, length).getQString());
        }
    }

    return names;
}