qTox  Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
core.h
Go to the documentation of this file.
1 /*
2  Copyright © 2013 by Maxim Biro <nurupo.contributions@gmail.com>
3  Copyright © 2014-2019 by The qTox Project Contributors
4 
5  This file is part of qTox, a Qt-based graphical interface for Tox.
6 
7  qTox is libre software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  qTox is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with qTox. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 #pragma once
22 
23 #include "groupid.h"
26 #include "icoregroupquery.h"
27 #include "icoreidhandler.h"
28 #include "receiptnum.h"
29 #include "toxfile.h"
30 #include "toxid.h"
31 #include "toxpk.h"
32 
33 #include "util/strongtype.h"
34 #include "util/compatiblerecursivemutex.h"
35 #include "src/model/status.h"
36 #include <tox/tox.h>
37 
38 #include <QMutex>
39 #include <QObject>
40 #include <QThread>
41 #include <QTimer>
42 
43 #include <functional>
44 #include <memory>
45 
46 class CoreAV;
47 class CoreFile;
48 class CoreExt;
49 class IAudioControl;
50 class ICoreSettings;
51 class GroupInvite;
52 class Profile;
53 class Core;
55 class DhtServer;
56 
57 using ToxCorePtr = std::unique_ptr<Core>;
58 
59 class Core : public QObject,
61  public ICoreIdHandler,
63  public ICoreGroupQuery
64 {
65  Q_OBJECT
66 public:
67  enum class ToxCoreErrors
68  {
69  BAD_PROXY,
73  };
74 
75  static ToxCorePtr makeToxCore(const QByteArray& savedata, const ICoreSettings& settings,
76  IBootstrapListGenerator& bootstrapNodes, ToxCoreErrors* err = nullptr);
77  const CoreAV* getAv() const;
78  CoreAV* getAv();
79  void setAv(CoreAV* coreAv);
80 
81  CoreFile* getCoreFile() const;
82  Tox* getTox() const;
83  CompatibleRecursiveMutex& getCoreLoopLock() const;
84 
85  const CoreExt* getExt() const;
86  CoreExt* getExt();
87  ~Core();
88 
89  static const QString TOX_EXT;
90  uint64_t getMaxMessageSize() const;
91  QString getPeerName(const ToxPk& id) const;
92  QVector<uint32_t> getFriendList() const;
93  GroupId getGroupPersistentId(uint32_t groupNumber) const override;
94  uint32_t getGroupNumberPeers(int groupId) const override;
95  QString getGroupPeerName(int groupId, int peerId) const override;
96  ToxPk getGroupPeerPk(int groupId, int peerId) const override;
97  QStringList getGroupPeerNames(int groupId) const override;
98  bool getGroupAvEnabled(int groupId) const override;
99  ToxPk getFriendPublicKey(uint32_t friendNumber) const;
100  QString getFriendUsername(uint32_t friendNumber) const;
101 
102  bool isFriendOnline(uint32_t friendId) const;
103  bool hasFriendWithPublicKey(const ToxPk& publicKey) const;
104  uint32_t joinGroupchat(const GroupInvite& inviteInfo);
105  void quitGroupChat(int groupId) const;
106 
107  QString getUsername() const override;
108  Status::Status getStatus() const;
109  QString getStatusMessage() const;
110  ToxId getSelfId() const override;
111  ToxPk getSelfPublicKey() const override;
112  QPair<QByteArray, QByteArray> getKeypair() const;
113 
114  void sendFile(uint32_t friendId, QString filename, QString filePath, long long filesize);
115 
116 public slots:
117  void start();
118 
119  QByteArray getToxSaveData();
120 
121  void acceptFriendRequest(const ToxPk& friendPk);
122  void requestFriendship(const ToxId& friendAddress, const QString& message);
123  void groupInviteFriend(uint32_t friendId, int groupId);
124  int createGroup(uint8_t type = TOX_CONFERENCE_TYPE_AV);
125 
126  void removeFriend(uint32_t friendId);
127  void removeGroup(int groupId);
128 
129  void setStatus(Status::Status status);
130  void setUsername(const QString& username);
131  void setStatusMessage(const QString& message);
132 
133  bool sendMessage(uint32_t friendId, const QString& message, ReceiptNum& receipt) override;
134  void sendGroupMessage(int groupId, const QString& message) override;
135  void sendGroupAction(int groupId, const QString& message) override;
136  void changeGroupTitle(int groupId, const QString& title);
137  bool sendAction(uint32_t friendId, const QString& action, ReceiptNum& receipt) override;
138  void sendTyping(uint32_t friendId, bool typing);
139 
140  void setNospam(uint32_t nospam);
141 
142 signals:
143  void connected();
144  void disconnected();
145 
146  void friendRequestReceived(const ToxPk& friendPk, const QString& message);
147  void friendAvatarChanged(const ToxPk& friendPk, const QByteArray& pic);
148  void friendAvatarRemoved(const ToxPk& friendPk);
149 
150  void requestSent(const ToxPk& friendPk, const QString& message);
151  void failedToAddFriend(const ToxPk& friendPk, const QString& errorInfo = QString());
152 
153  void usernameSet(const QString& username);
154  void statusMessageSet(const QString& message);
155  void statusSet(Status::Status status);
156  void idSet(const ToxId& id);
157 
158  void failedToSetUsername(const QString& username);
159  void failedToSetStatusMessage(const QString& message);
160  void failedToSetStatus(Status::Status status);
161  void failedToSetTyping(bool typing);
162 
163  void saveRequest();
164 
169  void fileAvatarOfferReceived(uint32_t friendId, uint32_t fileId, const QByteArray& avatarHash, uint64_t filesize);
170 
171  void friendMessageReceived(uint32_t friendId, const QString& message, bool isAction);
172  void friendAdded(uint32_t friendId, const ToxPk& friendPk);
173 
174  void friendStatusChanged(uint32_t friendId, Status::Status status);
175  void friendStatusMessageChanged(uint32_t friendId, const QString& message);
176  void friendUsernameChanged(uint32_t friendId, const QString& username);
177  void friendTypingChanged(uint32_t friendId, bool isTyping);
178 
179  void friendRemoved(uint32_t friendId);
180  void friendLastSeenChanged(uint32_t friendId, const QDateTime& dateTime);
181 
182  void emptyGroupCreated(int groupnumber, const GroupId groupId, const QString& title = QString());
183  void groupInviteReceived(const GroupInvite& inviteInfo);
184  void groupMessageReceived(int groupnumber, int peernumber, const QString& message, bool isAction);
185  void groupNamelistChanged(int groupnumber, int peernumber, uint8_t change);
186  void groupPeerlistChanged(int groupnumber);
187  void groupPeerNameChanged(int groupnumber, const ToxPk& peerPk, const QString& newName);
188  void groupTitleChanged(int groupnumber, const QString& author, const QString& title);
189  void groupPeerAudioPlaying(int groupnumber, ToxPk peerPk);
190  void groupSentFailed(int groupId);
191  void groupJoined(int groupnumber, GroupId groupId);
192  void actionSentResult(uint32_t friendId, const QString& action, int success);
193 
194  void receiptRecieved(int friedId, ReceiptNum receipt);
195 
196  void failedToRemoveFriend(uint32_t friendId);
197 
198 private:
199  Core(QThread* coreThread, IBootstrapListGenerator& _bootstrapNodes, const ICoreSettings& settings);
200 
201  static void onFriendRequest(Tox* tox, const uint8_t* cUserId, const uint8_t* cMessage,
202  size_t cMessageSize, void* core);
203  static void onFriendMessage(Tox* tox, uint32_t friendId, Tox_Message_Type type,
204  const uint8_t* cMessage, size_t cMessageSize, void* core);
205  static void onFriendNameChange(Tox* tox, uint32_t friendId, const uint8_t* cName,
206  size_t cNameSize, void* core);
207  static void onFriendTypingChange(Tox* tox, uint32_t friendId, bool isTyping, void* core);
208  static void onStatusMessageChanged(Tox* tox, uint32_t friendId, const uint8_t* cMessage,
209  size_t cMessageSize, void* core);
210  static void onUserStatusChanged(Tox* tox, uint32_t friendId, Tox_User_Status userstatus,
211  void* core);
212  static void onConnectionStatusChanged(Tox* tox, uint32_t friendId, Tox_Connection status,
213  void* vCore);
214  static void onGroupInvite(Tox* tox, uint32_t friendId, Tox_Conference_Type type,
215  const uint8_t* cookie, size_t length, void* vCore);
216  static void onGroupMessage(Tox* tox, uint32_t groupId, uint32_t peerId, Tox_Message_Type type,
217  const uint8_t* cMessage, size_t length, void* vCore);
218  static void onGroupPeerListChange(Tox*, uint32_t groupId, void* core);
219  static void onGroupPeerNameChange(Tox*, uint32_t groupId, uint32_t peerId, const uint8_t* name,
220  size_t length, void* core);
221  static void onGroupTitleChange(Tox* tox, uint32_t groupId, uint32_t peerId,
222  const uint8_t* cTitle, size_t length, void* vCore);
223 
224  static void onLosslessPacket(Tox* tox, uint32_t friendId,
225  const uint8_t* data, size_t length, void* core);
226  static void onReadReceiptCallback(Tox* tox, uint32_t friendId, uint32_t receipt, void* core);
227 
228  void sendGroupMessageWithType(int groupId, const QString& message, Tox_Message_Type type);
229  bool sendMessageWithType(uint32_t friendId, const QString& message, Tox_Message_Type type, ReceiptNum& receipt);
230  bool checkConnection();
231 
232  void makeTox(QByteArray savedata, ICoreSettings* s);
233  void loadFriends();
234  void loadGroups();
235  void bootstrapDht();
236 
237  void checkLastOnline(uint32_t friendId);
238 
239  QString getFriendRequestErrorMessage(const ToxId& friendId, const QString& message) const;
240  static void registerCallbacks(Tox* tox);
241 
242 private slots:
243  void process();
244  void onStarted();
245 
246 private:
247  struct ToxDeleter
248  {
249  void operator()(Tox* tox)
250  {
251  tox_kill(tox);
252  }
253  };
254  /* Using the now commented out statements in checkConnection(), I watched how
255  * many ticks disconnects-after-initial-connect lasted. Out of roughly 15 trials,
256  * 5 disconnected; 4 were DCd for less than 20 ticks, while the 5th was ~50 ticks.
257  * So I set the tolerance here at 25, and initial DCs should be very rare now.
258  * This should be able to go to 50 or 100 without affecting legitimate disconnects'
259  * downtime, but lets be conservative for now. Edit: now ~~40~~ 30.
260  */
261  #define CORE_DISCONNECT_TOLERANCE 30
262 
263  using ToxPtr = std::unique_ptr<Tox, ToxDeleter>;
265 
266  std::unique_ptr<CoreFile> file;
267  CoreAV* av = nullptr;
268  std::unique_ptr<CoreExt> ext;
269  QTimer* toxTimer = nullptr;
270  // recursive, since we might call our own functions
271  mutable CompatibleRecursiveMutex coreLoopLock;
272 
273  std::unique_ptr<QThread> coreThread;
276  bool isConnected = false;
278 };
Core::groupTitleChanged
void groupTitleChanged(int groupnumber, const QString &author, const QString &title)
Core::setNospam
void setNospam(uint32_t nospam)
Sets the NoSpam value to prevent friend request spam.
Definition: core.cpp:1804
Core::failedToSetTyping
void failedToSetTyping(bool typing)
Core::getFriendUsername
QString getFriendUsername(uint32_t friendNumber) const
Get the username of a friend.
Definition: core.cpp:1740
Core::getTox
Tox * getTox() const
Definition: core.cpp:723
Core::sendFile
void sendFile(uint32_t friendId, QString filename, QString filePath, long long filesize)
Core::actionSentResult
void actionSentResult(uint32_t friendId, const QString &action, int success)
Core::onFriendRequest
static void onFriendRequest(Tox *tox, const uint8_t *cUserId, const uint8_t *cMessage, size_t cMessageSize, void *core)
Definition: core.cpp:853
Status::Status
Status
Definition: status.h:28
Core::failedToRemoveFriend
void failedToRemoveFriend(uint32_t friendId)
Core::ToxPtr
std::unique_ptr< Tox, ToxDeleter > ToxPtr
Definition: core.h:263
Core::statusSet
void statusSet(Status::Status status)
Core::sendMessageWithType
bool sendMessageWithType(uint32_t friendId, const QString &message, Tox_Message_Type type, ReceiptNum &receipt)
Definition: core.cpp:1086
Core::fileAvatarOfferReceived
void fileAvatarOfferReceived(uint32_t friendId, uint32_t fileId, const QByteArray &avatarHash, uint64_t filesize)
toxid.h
Core::start
void start()
Starts toxcore and it's event loop, can be called from any thread.
Definition: core.cpp:698
Core::connected
void connected()
Core::friendAvatarRemoved
void friendAvatarRemoved(const ToxPk &friendPk)
toxfile.h
Core::sendAction
bool sendAction(uint32_t friendId, const QString &action, ReceiptNum &receipt) override
Definition: core.cpp:1114
Core::ToxDeleter
Definition: core.h:247
Core::~Core
~Core()
Definition: core.cpp:499
Core::acceptFriendRequest
void acceptFriendRequest(const ToxPk &friendPk)
Definition: core.cpp:1016
Core::getFriendRequestErrorMessage
QString getFriendRequestErrorMessage(const ToxId &friendId, const QString &message) const
Checks that sending friendship request is correct and returns error message accordingly.
Definition: core.cpp:1035
Core::getGroupPeerName
QString getGroupPeerName(int groupId, int peerId) const override
Get the name of a peer of a group.
Definition: core.cpp:1518
Core::coreLoopLock
CompatibleRecursiveMutex coreLoopLock
Definition: core.h:271
Core::getSelfPublicKey
ToxPk getSelfPublicKey() const override
Gets self public key.
Definition: core.cpp:1271
Core::failedToSetStatusMessage
void failedToSetStatusMessage(const QString &message)
Core::friendRequestReceived
void friendRequestReceived(const ToxPk &friendPk, const QString &message)
Profile
Handles all qTox internal paths.
Definition: profile.h:42
Core::onConnectionStatusChanged
static void onConnectionStatusChanged(Tox *tox, uint32_t friendId, Tox_Connection status, void *vCore)
Definition: core.cpp:910
Core::saveRequest
void saveRequest()
Core::registerCallbacks
static void registerCallbacks(Tox *tox)
Registers all toxcore callbacks.
Definition: core.cpp:515
Core::toxTimer
QTimer * toxTimer
Definition: core.h:269
IBootstrapListGenerator
Definition: ibootstraplistgenerator.h:25
GroupInvite
This class contains information needed to create a group invite.
Definition: groupinvite.h:26
Core::friendStatusMessageChanged
void friendStatusMessageChanged(uint32_t friendId, const QString &message)
Core::failedToSetUsername
void failedToSetUsername(const QString &username)
ICoreFriendMessageSender
Definition: icorefriendmessagesender.h:27
ToxCorePtr
std::unique_ptr< Core > ToxCorePtr
Definition: core.h:57
Core::checkConnection
bool checkConnection()
Definition: core.cpp:773
Core::ext
std::unique_ptr< CoreExt > ext
Definition: core.h:268
Core::makeTox
void makeTox(QByteArray savedata, ICoreSettings *s)
Core::av
CoreAV * av
Definition: core.h:267
icoregroupmessagesender.h
Core::TOX_EXT
static const QString TOX_EXT
Definition: core.h:89
Core::ToxDeleter::operator()
void operator()(Tox *tox)
Definition: core.h:249
Core::ToxCoreErrors::FAILED_TO_START
@ FAILED_TO_START
toxpk.h
Core::groupJoined
void groupJoined(int groupnumber, GroupId groupId)
Core::loadFriends
void loadFriends()
Definition: core.cpp:1389
Core::failedToSetStatus
void failedToSetStatus(Status::Status status)
Core::friendMessageReceived
void friendMessageReceived(uint32_t friendId, const QString &message, bool isAction)
Core::failedToAddFriend
void failedToAddFriend(const ToxPk &friendPk, const QString &errorInfo=QString())
Core::getCoreFile
CoreFile * getCoreFile() const
Definition: core.cpp:718
Core::onReadReceiptCallback
static void onReadReceiptCallback(Tox *tox, uint32_t friendId, uint32_t receipt, void *core)
Definition: core.cpp:1011
Core::onGroupTitleChange
static void onGroupTitleChange(Tox *tox, uint32_t groupId, uint32_t peerId, const uint8_t *cTitle, size_t length, void *vCore)
Definition: core.cpp:988
Core::onFriendNameChange
static void onFriendNameChange(Tox *tox, uint32_t friendId, const uint8_t *cName, size_t cNameSize, void *core)
Definition: core.cpp:869
Core::coreThread
std::unique_ptr< QThread > coreThread
Definition: core.h:273
Core::groupPeerAudioPlaying
void groupPeerAudioPlaying(int groupnumber, ToxPk peerPk)
Core::friendAvatarChanged
void friendAvatarChanged(const ToxPk &friendPk, const QByteArray &pic)
Core::onGroupPeerNameChange
static void onGroupPeerNameChange(Tox *, uint32_t groupId, uint32_t peerId, const uint8_t *name, size_t length, void *core)
Definition: core.cpp:978
Core::getAv
const CoreAV * getAv() const
Definition: core.cpp:703
Core::tolerance
int tolerance
Definition: core.h:277
Core::file
std::unique_ptr< CoreFile > file
Definition: core.h:266
Core::friendLastSeenChanged
void friendLastSeenChanged(uint32_t friendId, const QDateTime &dateTime)
Core::settings
const ICoreSettings & settings
Definition: core.h:275
Core::onFriendMessage
static void onFriendMessage(Tox *tox, uint32_t friendId, Tox_Message_Type type, const uint8_t *cMessage, size_t cMessageSize, void *core)
Definition: core.cpp:861
Core::changeGroupTitle
void changeGroupTitle(int groupId, const QString &title)
Definition: core.cpp:1166
Core::friendAdded
void friendAdded(uint32_t friendId, const ToxPk &friendPk)
Core::groupMessageReceived
void groupMessageReceived(int groupnumber, int peernumber, const QString &message, bool isAction)
Core::isConnected
bool isConnected
Definition: core.h:276
receiptnum.h
Core::groupNamelistChanged
void groupNamelistChanged(int groupnumber, int peernumber, uint8_t change)
Core::isFriendOnline
bool isFriendOnline(uint32_t friendId) const
Checks if a friend is online. Unknown friends are considered offline.
Definition: core.cpp:1693
Core::receiptRecieved
void receiptRecieved(int friedId, ReceiptNum receipt)
Core::getSelfId
ToxId getSelfId() const override
Returns our Tox ID.
Definition: core.cpp:1258
Core::getUsername
QString getUsername() const override
Returns our username, or an empty string on failure.
Definition: core.cpp:1217
Core::emptyGroupCreated
void emptyGroupCreated(int groupnumber, const GroupId groupId, const QString &title=QString())
Core::sendGroupMessageWithType
void sendGroupMessageWithType(int groupId, const QString &message, Tox_Message_Type type)
Definition: core.cpp:1131
CoreExt
Definition: coreext.h:41
Core::getGroupPeerPk
ToxPk getGroupPeerPk(int groupId, int peerId) const override
Get the public key of a peer of a group.
Definition: core.cpp:1540
Core::getMaxMessageSize
uint64_t getMaxMessageSize() const
Definition: core.cpp:1758
HistMessageContentType::message
@ message
Core::getToxSaveData
QByteArray getToxSaveData()
Returns the unencrypted tox save data.
Definition: core.cpp:1378
ICoreGroupMessageSender
Definition: icoregroupmessagesender.h:24
ToxPk
This class represents a Tox Public Key, which is a part of Tox ID.
Definition: toxpk.h:26
Core::getGroupPersistentId
GroupId getGroupPersistentId(uint32_t groupNumber) const override
Definition: core.cpp:1484
Core::bootstrapListGenerator
const IBootstrapListGenerator & bootstrapListGenerator
Definition: core.h:274
Core::ToxCoreErrors
ToxCoreErrors
Definition: core.h:67
Core::sendGroupAction
void sendGroupAction(int groupId, const QString &message) override
Definition: core.cpp:1159
Core::getGroupPeerNames
QStringList getGroupPeerNames(int groupId) const override
Get the names of the peers of a group.
Definition: core.cpp:1557
Core::getFriendPublicKey
ToxPk getFriendPublicKey(uint32_t friendNumber) const
Get the public key part of the ToxID only.
Definition: core.cpp:1722
ICoreGroupQuery
Definition: icoregroupquery.h:31
Core::onGroupInvite
static void onGroupInvite(Tox *tox, uint32_t friendId, Tox_Conference_Type type, const uint8_t *cookie, size_t length, void *vCore)
Definition: core.cpp:939
Core::getCoreLoopLock
CompatibleRecursiveMutex & getCoreLoopLock() const
Definition: core.cpp:728
Core::sendGroupMessage
void sendGroupMessage(int groupId, const QString &message) override
Definition: core.cpp:1152
Core::process
void process()
Processes toxcore events and ensure we stay connected, called by its own timer.
Definition: core.cpp:746
Core::usernameSet
void usernameSet(const QString &username)
Core::requestFriendship
void requestFriendship(const ToxId &friendAddress, const QString &message)
Definition: core.cpp:1059
Core::setStatus
void setStatus(Status::Status status)
Definition: core.cpp:1347
ToxId
This class represents a Tox ID.
Definition: toxid.h:29
Core::disconnected
void disconnected()
Core::groupPeerlistChanged
void groupPeerlistChanged(int groupnumber)
Core::removeGroup
void removeGroup(int groupId)
Definition: core.cpp:1194
icoregroupquery.h
Core::onFriendTypingChange
static void onFriendTypingChange(Tox *tox, uint32_t friendId, bool isTyping, void *core)
Definition: core.cpp:876
groupid.h
GroupId
This class represents a long term persistent group identifier.
Definition: groupid.h:26
Core::onUserStatusChanged
static void onUserStatusChanged(Tox *tox, uint32_t friendId, Tox_User_Status userstatus, void *core)
Definition: core.cpp:889
Core::getGroupNumberPeers
uint32_t getGroupNumberPeers(int groupId) const override
Get number of peers in the conference.
Definition: core.cpp:1502
Core::statusMessageSet
void statusMessageSet(const QString &message)
Core::setUsername
void setUsername(const QString &username)
Definition: core.cpp:1235
Core::onGroupMessage
static void onGroupMessage(Tox *tox, uint32_t groupId, uint32_t peerId, Tox_Message_Type type, const uint8_t *cMessage, size_t length, void *vCore)
Definition: core.cpp:961
Core::checkLastOnline
void checkLastOnline(uint32_t friendId)
Definition: core.cpp:1460
Core::quitGroupChat
void quitGroupChat(int groupId) const
icorefriendmessagesender.h
Core::ToxCoreErrors::ERROR_ALLOC
@ ERROR_ALLOC
Core::createGroup
int createGroup(uint8_t type=TOX_CONFERENCE_TYPE_AV)
Definition: core.cpp:1659
Core::ToxCoreErrors::INVALID_SAVE
@ INVALID_SAVE
Core::ToxCoreErrors::BAD_PROXY
@ BAD_PROXY
Core::tox
ToxPtr tox
Definition: core.h:264
ICoreIdHandler
Definition: icoreidhandler.h:25
Core::onStarted
void onStarted()
Definition: core.cpp:669
Core::sendMessage
bool sendMessage(uint32_t friendId, const QString &message, ReceiptNum &receipt) override
Definition: core.cpp:1108
Core::idSet
void idSet(const ToxId &id)
Core::Core
Core(QThread *coreThread, IBootstrapListGenerator &_bootstrapNodes, const ICoreSettings &settings)
Definition: core.cpp:486
Core::getExt
const CoreExt * getExt() const
Definition: core.cpp:733
DhtServer
Definition: dhtserver.h:27
Core::getKeypair
QPair< QByteArray, QByteArray > getKeypair() const
Returns our public and private keys.
Definition: core.cpp:1283
Core::friendTypingChanged
void friendTypingChanged(uint32_t friendId, bool isTyping)
Core::onStatusMessageChanged
static void onStatusMessageChanged(Tox *tox, uint32_t friendId, const uint8_t *cMessage, size_t cMessageSize, void *core)
Definition: core.cpp:881
Core::getPeerName
QString getPeerName(const ToxPk &id) const
Definition: core.cpp:1773
ReceiptNum
NamedType< uint32_t, struct ReceiptNumTag, Orderable > ReceiptNum
Definition: receiptnum.h:27
Core::getStatus
Status::Status getStatus() const
Returns our user status.
Definition: core.cpp:1320
Core::makeToxCore
static ToxCorePtr makeToxCore(const QByteArray &savedata, const ICoreSettings &settings, IBootstrapListGenerator &bootstrapNodes, ToxCoreErrors *err=nullptr)
Factory method for the Core object.
Definition: core.cpp:539
Core::setAv
void setAv(CoreAV *coreAv)
Definition: core.cpp:713
Core::onGroupPeerListChange
static void onGroupPeerListChange(Tox *, uint32_t groupId, void *core)
Definition: core.cpp:970
ICoreSettings
Definition: icoresettings.h:28
CORE_DISCONNECT_TOLERANCE
#define CORE_DISCONNECT_TOLERANCE
Definition: core.h:261
Core::getGroupAvEnabled
bool getGroupAvEnabled(int groupId) const override
Check, that group has audio or video stream.
Definition: core.cpp:1598
Core::loadGroups
void loadGroups()
Definition: core.cpp:1421
Core::setStatusMessage
void setStatusMessage(const QString &message)
Definition: core.cpp:1327
Core::friendStatusChanged
void friendStatusChanged(uint32_t friendId, Status::Status status)
Core::requestSent
void requestSent(const ToxPk &friendPk, const QString &message)
Core::joinGroupchat
uint32_t joinGroupchat(const GroupInvite &inviteInfo)
Accept a groupchat invite.
Definition: core.cpp:1614
Core::groupSentFailed
void groupSentFailed(int groupId)
icoreidhandler.h
Core::removeFriend
void removeFriend(uint32_t friendId)
Definition: core.cpp:1179
Core::getStatusMessage
QString getStatusMessage() const
Returns our status message, or an empty string on failure.
Definition: core.cpp:1302
Core::bootstrapDht
void bootstrapDht()
Connects us to the Tox network.
Definition: core.cpp:810
Core::friendUsernameChanged
void friendUsernameChanged(uint32_t friendId, const QString &username)
CoreFile
Manages the file transfer service of toxcore.
Definition: corefile.h:46
Core::groupInviteReceived
void groupInviteReceived(const GroupInvite &inviteInfo)
Core::getFriendList
QVector< uint32_t > getFriendList() const
Returns the list of friendIds in our friendlist, an empty list on error.
Definition: core.cpp:1474
Core::friendRemoved
void friendRemoved(uint32_t friendId)
CoreAV
Definition: coreav.h:47
Core::groupPeerNameChanged
void groupPeerNameChanged(int groupnumber, const ToxPk &peerPk, const QString &newName)
status.h
Core::groupInviteFriend
void groupInviteFriend(uint32_t friendId, int groupId)
Definition: core.cpp:1650
Core
Definition: core.h:59
Core::sendTyping
void sendTyping(uint32_t friendId, bool typing)
Definition: core.cpp:1120
Core::hasFriendWithPublicKey
bool hasFriendWithPublicKey(const ToxPk &publicKey) const
Checks if we have a friend by public key.
Definition: core.cpp:1706
Core::onLosslessPacket
static void onLosslessPacket(Tox *tox, uint32_t friendId, const uint8_t *data, size_t length, void *core)
Handling of custom lossless packets received by toxcore. Currently only used to forward toxext packet...
Definition: core.cpp:1004