Program Listing for File IConnection.h
↰ Return to documentation for file (axr.sdk/netengine/IConnection.h
)
#pragma once
#include "../StringEnum.h"
#include <cpprest/asyncrt_utils.h>
#include <functional>
#include <vector>
namespace axr {
namespace sdk {
namespace netengine {
class SocketMode : public StringEnum<SocketMode>
{
public:
static const SocketMode* BOTH;
static const SocketMode* DOWN;
static const SocketMode* UP;
};
class IConnection
{
public:
typedef std::function<void(std::shared_ptr<net::IWebSocketMessage> msg)> MessageCallback;
virtual std::vector<MessageCallback>::const_iterator AddMessageListener(MessageCallback callback) = 0;
virtual void RemoveMessageListener(std::vector<MessageCallback>::const_iterator iter) = 0;
virtual pplx::task<void> Connect(utility::string_t url) = 0;
virtual pplx::task<void> Disconnect() = 0;
virtual void AddSocket(std::shared_ptr<net::IWebSocket> socket, const SocketMode* mode) = 0;
virtual pplx::task<void> Send(std::shared_ptr<net::IWebSocketMessage> message) = 0;
};
} // namespace netengine
} // namespace sdk
} // namespace axr