#pragma once
#include
#include
#include
namespace base::http {
struct WebSocketMessage {
enum class Type { Text, Binary };
WebSocketMessage() = default; // for d-construciton
explicit WebSocketMessage(const std::string& str);
explicit WebSocketMessage(const std::vector& data);
explicit WebSocketMessage(const std::span& data);
Type GetType() const;
const std::string& AsText() const;
const std::vector& AsBinary() const;
private:
struct Text {
std::string data;
};
struct Binary {
std::vector data;
};
// no payload (yet?)
// struct Ping {};
std::variant payload;
};
// Helper to more easily build a websocket message object
template
inline std::shared_ptr BuildMessage(const In& in) {
return std::make_shared(in);
}
} // namespace base::http