Program Listing for File PocoWebSocket.h
↰ Return to documentation for file (axr.sdk/net/PocoWebSocket.h
)
// Copyright (C) AcceleratXR, Inc. All rights reserved.
#pragma once
#ifdef USE_POCO
#include "IWebSocket.h"
#include "../Configuration.h"
#include <Poco/Net/HTTPClientSession.h>
#include <Poco/Net/WebSocket.h>
namespace axr {
namespace sdk {
namespace net {
class PocoWebSocket : public IWebSocket
{
public:
PocoWebSocket(std::shared_ptr<Configuration> config);
~PocoWebSocket();
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:
std::shared_ptr<Configuration> m_Config;
std::vector<CloseCallback> m_CloseCallbacks;
std::vector<MessageCallback> m_MessageCallbacks;
Poco::Net::HTTPClientSession m_Session;
std::shared_ptr<Poco::Net::WebSocket> m_Socket;
};
} // namespace net
} // namespace sdk
} // namespace axr
#endif // USE_POCO