Babel
Epitech's C++ VoIP project
QtTCPConnection.hpp
Go to the documentation of this file.
1 //
2 // Created by cbihan on 05/10/2021.
3 //
4 
5 #pragma once
6 
7 #include <cstdint>
9 #include "Network/RFCCodes.hpp"
10 #include <QTcpSocket>
11 #include <QtWidgets>
12 #include <functional>
13 #include <QString>
14 #include <QObject>
15 
16 namespace Babel {
17  class QtTCPConnection : public QObject, public ITCPConnection<RFCCodes> {
18  Q_OBJECT
19  public:
20 
24  void connect(const std::string &hostname, uint16_t port) override;
25 
27  void disconnect() override;
28 
30  bool isConnected() const override;
31 
34  void send(Message<RFCCodes> message) override;
35 
37  void readForMessages() override;
38 
40  void setCallbackOnMessage(std::function<void(Message<RFCCodes>)> callMessageReceived) override;
41 
43  uint64_t getId() const override;
44 
46  void setId(uint64_t id) override;
47 
49  std::string getPeerIp() const override;
50 
52  uint16_t getPeerPort() const override;
53 
55  explicit QtTCPConnection(QWidget *parent = nullptr, std::function<void(void)> onConnect = [](){});
56 
57  private:
58 
60  void readMessage();
61 
63  QTcpSocket *_socket;
64 
72  uint64_t _bytesRead;
74  uint64_t _connectionId;
75  };
76 
77 }
Babel::QtTCPConnection::getPeerPort
uint16_t getPeerPort() const override
get the connected pair port
Definition: QtTCPConnection.cpp:122
Babel::QtTCPConnection::_callbackMessageReceived
std::function< void(Message< RFCCodes >)> _callbackMessageReceived
The function called when a message has been fully received.
Definition: QtTCPConnection.hpp:66
Babel::QtTCPConnection
Definition: QtTCPConnection.hpp:17
Babel::QtTCPConnection::_bytesRead
uint64_t _bytesRead
used to track how much bytes of a message had been read
Definition: QtTCPConnection.hpp:72
Babel::QtTCPConnection::_tmpMessage
Message< RFCCodes > _tmpMessage
Message used when reading a message.
Definition: QtTCPConnection.hpp:70
Babel::QtTCPConnection::QtTCPConnection
QtTCPConnection(QWidget *parent=nullptr, std::function< void(void)> onConnect=[](){})
ctor
Definition: QtTCPConnection.cpp:11
Babel::QtTCPConnection::send
void send(Message< RFCCodes > message) override
Send the message.
Definition: QtTCPConnection.cpp:52
Babel::QtTCPConnection::isConnected
bool isConnected() const override
Tells if the connection is up.
Definition: QtTCPConnection.cpp:48
Babel::QtTCPConnection::getPeerIp
std::string getPeerIp() const override
Get the connected pair address.
Definition: QtTCPConnection.cpp:115
Babel::QtTCPConnection::getId
uint64_t getId() const override
Get the id of this connection.
Definition: QtTCPConnection.cpp:107
ITCPConnection.hpp
Babel::Message< RFCCodes >
RFCCodes.hpp
Babel
Definition: IAudioManager.hpp:13
Babel::TSQueue
Thread Safe queue.
Definition: TSQueue.hpp:17
Babel::ITCPConnection
Definition: ITCPConnection.hpp:16
Babel::QtTCPConnection::_messagesOut
TSQueue< Message< RFCCodes > > _messagesOut
All the messages that need to be sent.
Definition: QtTCPConnection.hpp:68
Babel::QtTCPConnection::connect
void connect(const std::string &hostname, uint16_t port) override
connect to a hostname and a port
Definition: QtTCPConnection.cpp:39
Babel::QtTCPConnection::setId
void setId(uint64_t id) override
set the id of the connection
Definition: QtTCPConnection.cpp:111
Babel::QtTCPConnection::readMessage
void readMessage()
Read a Message<T> from the socket when a message is read _callbackMessageReceived is called.
Definition: QtTCPConnection.cpp:66
Babel::QtTCPConnection::_socket
QTcpSocket * _socket
The socket internally used.
Definition: QtTCPConnection.hpp:63
Babel::QtTCPConnection::_connectionId
uint64_t _connectionId
id used to identify the connection
Definition: QtTCPConnection.hpp:74
Babel::QtTCPConnection::disconnect
void disconnect() override
disconnect the connection
Definition: QtTCPConnection.cpp:44
Babel::QtTCPConnection::readForMessages
void readForMessages() override
listen for new messages
Definition: QtTCPConnection.cpp:63
Babel::QtTCPConnection::setCallbackOnMessage
void setCallbackOnMessage(std::function< void(Message< RFCCodes >)> callMessageReceived) override
Called when we received a message.
Definition: QtTCPConnection.cpp:103