Program Listing for File CpprestsdkWebSocket.h
↰ Return to documentation for file (axr.sdk/net/CpprestsdkWebSocket.h
)
// Copyright (C) AcceleratXR, Inc. All rights reserved.
#pragma once
#ifdef USE_CPPRESTSDK
#include "IWebSocket.h"
#include "../Configuration.h"
#include <cpprest/ws_client.h>
namespace axr {
namespace sdk {
namespace net {
class CpprestsdkWebSocketMessage : public IWebSocketMessage, private web::websockets::client::websocket_incoming_message
{
public:
CpprestsdkWebSocketMessage(const CpprestsdkWebSocketMessage& msg)
: web::websockets::client::websocket_incoming_message(msg)
{
}
CpprestsdkWebSocketMessage(const web::websockets::client::websocket_incoming_message& msg)
: web::websockets::client::websocket_incoming_message(msg)
{
}
virtual pplx::task<utility::string_t> ExtractString() const override;
};
class CpprestsdkWebSocket : public IWebSocket
{
public:
CpprestsdkWebSocket(std::shared_ptr<Configuration> config);
~CpprestsdkWebSocket();
virtual std::vector<CloseCallback>::const_iterator AddCloseHandler(CloseCallback callback) override;
virtual void RemoveCloseHandler(std::vector<CloseCallback>::const_iterator iter) override;
virtual std::vector<MessageCallback>::const_iterator AddMessageHandler(MessageCallback callback) override;
virtual void RemoveMessageHandler(std::vector<MessageCallback>::const_iterator iter) override;
virtual pplx::task<void> Connect(utility::string_t uri) override;
virtual pplx::task<void> Close() override;
virtual pplx::task<void> Send(std::shared_ptr<IWebSocketMessage> message) override;
private:
web::websockets::client::websocket_callback_client m_client;
std::vector<CloseCallback> m_closeCallbacks;
std::shared_ptr<Configuration> m_config;
std::vector<MessageCallback> m_messageCallbacks;
void OnClose(web::websockets::client::websocket_close_status status, const utility::string_t& reason, const std::error_code& code);
void OnMessage(const web::websockets::client::websocket_incoming_message& msg);
};
} // namespace net
} // namespace sdk
} // namespace axr
#endif // USE_CPPRESTSDK