diff options
author | zugz (tox) <mbays+tox@sdf.org> | 2018-10-31 19:21:00 +0100 |
---|---|---|
committer | iphydf <iphydf@users.noreply.github.com> | 2019-01-05 15:01:29 +0000 |
commit | a122ee9e01a1614366350537e1b49299eb355c1d (patch) | |
tree | 71dac74aa73f90bce66b8cc9299408e0c4e52c42 /toxcore/tox.c | |
parent | ebf3a82de8709270cb46266f1c06a3c1cee0649d (diff) |
Expose offline conference peers in API
Diffstat (limited to 'toxcore/tox.c')
-rw-r--r-- | toxcore/tox.c | 112 |
1 files changed, 106 insertions, 6 deletions
diff --git a/toxcore/tox.c b/toxcore/tox.c index 88a9bd50..d848102e 100644 --- a/toxcore/tox.c +++ b/toxcore/tox.c | |||
@@ -713,6 +713,7 @@ Tox_Connection tox_self_get_connection_status(const Tox *tox) | |||
713 | { | 713 | { |
714 | const Messenger *m = tox->m; | 714 | const Messenger *m = tox->m; |
715 | 715 | ||
716 | // TODO(zugz): this can be const. Similarly throughout the file. | ||
716 | unsigned int ret = onion_connection_status(m->onion_c); | 717 | unsigned int ret = onion_connection_status(m->onion_c); |
717 | 718 | ||
718 | if (ret == 2) { | 719 | if (ret == 2) { |
@@ -1533,8 +1534,7 @@ uint32_t tox_conference_new(Tox *tox, Tox_Err_Conference_New *error) | |||
1533 | bool tox_conference_delete(Tox *tox, uint32_t conference_number, Tox_Err_Conference_Delete *error) | 1534 | bool tox_conference_delete(Tox *tox, uint32_t conference_number, Tox_Err_Conference_Delete *error) |
1534 | { | 1535 | { |
1535 | Messenger *m = tox->m; | 1536 | Messenger *m = tox->m; |
1536 | group_leave(m->conferences_object, conference_number); | 1537 | int ret = del_groupchat(m->conferences_object, conference_number, true); |
1537 | int ret = del_groupchat(m->conferences_object, conference_number); | ||
1538 | 1538 | ||
1539 | if (ret == -1) { | 1539 | if (ret == -1) { |
1540 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_DELETE_CONFERENCE_NOT_FOUND); | 1540 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_DELETE_CONFERENCE_NOT_FOUND); |
@@ -1548,7 +1548,7 @@ bool tox_conference_delete(Tox *tox, uint32_t conference_number, Tox_Err_Confere | |||
1548 | uint32_t tox_conference_peer_count(const Tox *tox, uint32_t conference_number, Tox_Err_Conference_Peer_Query *error) | 1548 | uint32_t tox_conference_peer_count(const Tox *tox, uint32_t conference_number, Tox_Err_Conference_Peer_Query *error) |
1549 | { | 1549 | { |
1550 | const Messenger *m = tox->m; | 1550 | const Messenger *m = tox->m; |
1551 | int ret = group_number_peers(m->conferences_object, conference_number); | 1551 | int ret = group_number_peers(m->conferences_object, conference_number, false); |
1552 | 1552 | ||
1553 | if (ret == -1) { | 1553 | if (ret == -1) { |
1554 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | 1554 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); |
@@ -1563,7 +1563,7 @@ size_t tox_conference_peer_get_name_size(const Tox *tox, uint32_t conference_num | |||
1563 | Tox_Err_Conference_Peer_Query *error) | 1563 | Tox_Err_Conference_Peer_Query *error) |
1564 | { | 1564 | { |
1565 | const Messenger *m = tox->m; | 1565 | const Messenger *m = tox->m; |
1566 | int ret = group_peername_size(m->conferences_object, conference_number, peer_number); | 1566 | int ret = group_peername_size(m->conferences_object, conference_number, peer_number, false); |
1567 | 1567 | ||
1568 | switch (ret) { | 1568 | switch (ret) { |
1569 | case -1: | 1569 | case -1: |
@@ -1583,7 +1583,7 @@ bool tox_conference_peer_get_name(const Tox *tox, uint32_t conference_number, ui | |||
1583 | Tox_Err_Conference_Peer_Query *error) | 1583 | Tox_Err_Conference_Peer_Query *error) |
1584 | { | 1584 | { |
1585 | const Messenger *m = tox->m; | 1585 | const Messenger *m = tox->m; |
1586 | int ret = group_peername(m->conferences_object, conference_number, peer_number, name); | 1586 | int ret = group_peername(m->conferences_object, conference_number, peer_number, name, false); |
1587 | 1587 | ||
1588 | switch (ret) { | 1588 | switch (ret) { |
1589 | case -1: | 1589 | case -1: |
@@ -1603,7 +1603,7 @@ bool tox_conference_peer_get_public_key(const Tox *tox, uint32_t conference_numb | |||
1603 | uint8_t *public_key, Tox_Err_Conference_Peer_Query *error) | 1603 | uint8_t *public_key, Tox_Err_Conference_Peer_Query *error) |
1604 | { | 1604 | { |
1605 | const Messenger *m = tox->m; | 1605 | const Messenger *m = tox->m; |
1606 | int ret = group_peer_pubkey(m->conferences_object, conference_number, peer_number, public_key); | 1606 | int ret = group_peer_pubkey(m->conferences_object, conference_number, peer_number, public_key, false); |
1607 | 1607 | ||
1608 | switch (ret) { | 1608 | switch (ret) { |
1609 | case -1: | 1609 | case -1: |
@@ -1643,6 +1643,106 @@ bool tox_conference_peer_number_is_ours(const Tox *tox, uint32_t conference_numb | |||
1643 | return ret; | 1643 | return ret; |
1644 | } | 1644 | } |
1645 | 1645 | ||
1646 | uint32_t tox_conference_offline_peer_count(const Tox *tox, uint32_t conference_number, | ||
1647 | Tox_Err_Conference_Peer_Query *error) | ||
1648 | { | ||
1649 | const Messenger *m = tox->m; | ||
1650 | int ret = group_number_peers(m->conferences_object, conference_number, true); | ||
1651 | |||
1652 | if (ret == -1) { | ||
1653 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | ||
1654 | return UINT32_MAX; | ||
1655 | } | ||
1656 | |||
1657 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_OK); | ||
1658 | return ret; | ||
1659 | } | ||
1660 | |||
1661 | size_t tox_conference_offline_peer_get_name_size(const Tox *tox, uint32_t conference_number, | ||
1662 | uint32_t offline_peer_number, | ||
1663 | Tox_Err_Conference_Peer_Query *error) | ||
1664 | { | ||
1665 | const Messenger *m = tox->m; | ||
1666 | int ret = group_peername_size(m->conferences_object, conference_number, offline_peer_number, true); | ||
1667 | |||
1668 | switch (ret) { | ||
1669 | case -1: | ||
1670 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | ||
1671 | return -1; | ||
1672 | |||
1673 | case -2: | ||
1674 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_PEER_NOT_FOUND); | ||
1675 | return -1; | ||
1676 | } | ||
1677 | |||
1678 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_OK); | ||
1679 | return ret; | ||
1680 | } | ||
1681 | |||
1682 | bool tox_conference_offline_peer_get_name(const Tox *tox, uint32_t conference_number, uint32_t offline_peer_number, | ||
1683 | uint8_t *name, | ||
1684 | Tox_Err_Conference_Peer_Query *error) | ||
1685 | { | ||
1686 | const Messenger *m = tox->m; | ||
1687 | int ret = group_peername(m->conferences_object, conference_number, offline_peer_number, name, true); | ||
1688 | |||
1689 | switch (ret) { | ||
1690 | case -1: | ||
1691 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | ||
1692 | return false; | ||
1693 | |||
1694 | case -2: | ||
1695 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_PEER_NOT_FOUND); | ||
1696 | return false; | ||
1697 | } | ||
1698 | |||
1699 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_OK); | ||
1700 | return true; | ||
1701 | } | ||
1702 | |||
1703 | bool tox_conference_offline_peer_get_public_key(const Tox *tox, uint32_t conference_number, | ||
1704 | uint32_t offline_peer_number, | ||
1705 | uint8_t *public_key, Tox_Err_Conference_Peer_Query *error) | ||
1706 | { | ||
1707 | const Messenger *m = tox->m; | ||
1708 | int ret = group_peer_pubkey(m->conferences_object, conference_number, offline_peer_number, public_key, true); | ||
1709 | |||
1710 | switch (ret) { | ||
1711 | case -1: | ||
1712 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | ||
1713 | return false; | ||
1714 | |||
1715 | case -2: | ||
1716 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_PEER_NOT_FOUND); | ||
1717 | return false; | ||
1718 | } | ||
1719 | |||
1720 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_OK); | ||
1721 | return true; | ||
1722 | } | ||
1723 | |||
1724 | uint64_t tox_conference_offline_peer_get_last_active(const Tox *tox, uint32_t conference_number, | ||
1725 | uint32_t offline_peer_number, | ||
1726 | Tox_Err_Conference_Peer_Query *error) | ||
1727 | { | ||
1728 | const Messenger *m = tox->m; | ||
1729 | uint64_t last_active = UINT64_MAX; | ||
1730 | int ret = group_frozen_last_active(m->conferences_object, conference_number, offline_peer_number, &last_active); | ||
1731 | |||
1732 | switch (ret) { | ||
1733 | case -1: | ||
1734 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_CONFERENCE_NOT_FOUND); | ||
1735 | return UINT64_MAX; | ||
1736 | |||
1737 | case -2: | ||
1738 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_PEER_NOT_FOUND); | ||
1739 | return UINT64_MAX; | ||
1740 | } | ||
1741 | |||
1742 | SET_ERROR_PARAMETER(error, TOX_ERR_CONFERENCE_PEER_QUERY_OK); | ||
1743 | return last_active; | ||
1744 | } | ||
1745 | |||
1646 | bool tox_conference_invite(Tox *tox, uint32_t friend_number, uint32_t conference_number, | 1746 | bool tox_conference_invite(Tox *tox, uint32_t friend_number, uint32_t conference_number, |
1647 | Tox_Err_Conference_Invite *error) | 1747 | Tox_Err_Conference_Invite *error) |
1648 | { | 1748 | { |