aboutsummaryrefslogtreecommitdiff
path: root/include/sibs/DirectConnection.hpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2018-06-08 04:16:48 +0200
committerdec05eba <dec05eba@protonmail.com>2020-08-18 22:56:48 +0200
commit5d42dd6a18e3b8b6eb46739b8a1d15997e229de2 (patch)
treefea25599cbaa650011489c2685d3299cdbdbd743 /include/sibs/DirectConnection.hpp
parent824e669ddb12f1c30074c84eb731fa598f92ccfa (diff)
Make connect asynchronous
Diffstat (limited to 'include/sibs/DirectConnection.hpp')
-rw-r--r--include/sibs/DirectConnection.hpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/include/sibs/DirectConnection.hpp b/include/sibs/DirectConnection.hpp
index 45ba5d9..b7c467e 100644
--- a/include/sibs/DirectConnection.hpp
+++ b/include/sibs/DirectConnection.hpp
@@ -1,6 +1,5 @@
#pragma once
-#include <stdexcept>
#include <unordered_map>
#include <functional>
#include <string>
@@ -8,16 +7,17 @@
#include <thread>
#include <mutex>
#include <vector>
+#include <stdexcept>
#include "IpAddress.hpp"
#include "../types.hpp"
#include "../utils.hpp"
namespace sibs
{
- class ConnectionException : public std::runtime_error
+ class SocketCreateException : public std::runtime_error
{
public:
- ConnectionException(const std::string &errMsg) : std::runtime_error(errMsg) {}
+ SocketCreateException(const std::string &errMsg) : std::runtime_error(errMsg) {}
};
enum class PubSubResult
@@ -28,7 +28,7 @@ namespace sibs
struct DirectConnectionPeer;
- using PubSubConnectCallback = std::function<void(PubSubResult result, const std::string &resultStr)>;
+ using PubSubConnectCallback = std::function<void(std::shared_ptr<DirectConnectionPeer> peer, PubSubResult result, const std::string &resultStr)>;
using PubSubReceiveDataCallback = std::function<void(std::shared_ptr<DirectConnectionPeer> peer, const void *data, const usize size)>;
using PubSubSendDataCallback = std::function<void(PubSubResult result, const std::string &resultStr)>;
@@ -48,14 +48,14 @@ namespace sibs
~DirectConnections();
// Throws ConnectionException on error
- std::shared_ptr<DirectConnectionPeer> connectServer(const Ipv4 &address, PubSubReceiveDataCallback receiveDataCallbackFunc);
+ void connectServer(const Ipv4 &address, PubSubConnectCallback connectCallbackFunc, PubSubReceiveDataCallback receiveDataCallbackFunc);
// Throws ConnectionException on error
- std::shared_ptr<DirectConnectionPeer> connect(const Ipv4 &address, PubSubReceiveDataCallback receiveDataCallbackFunc);
+ void connect(const Ipv4 &address, PubSubConnectCallback connectCallbackFunc, PubSubReceiveDataCallback receiveDataCallbackFunc);
void send(const std::shared_ptr<DirectConnectionPeer> &peer, std::shared_ptr<std::vector<u8>> data, PubSubSendDataCallback sendDataCallbackFunc = nullptr);
protected:
int createSocket(const Ipv4 &addressToBind, bool rendezvous, bool reuseAddr);
private:
- std::shared_ptr<DirectConnectionPeer> connect(const Ipv4 &address, bool rendezvous, bool reuseAddr, PubSubReceiveDataCallback receiveDataCallbackFunc);
+ void connect(const Ipv4 &address, bool rendezvous, bool reuseAddr, PubSubConnectCallback connectCallbackFunc, PubSubReceiveDataCallback receiveDataCallbackFunc);
void receiveData();
int receiveDataFromPeer(const int socket, char *output);
bool removePeer(int peerSocket);