2022-01-01 23:50:23 +01:00

56 lines
1.5 KiB
C++

/*
* IXWebSocketMessage.h
* Author: Benjamin Sergeant
* Copyright (c) 2017-2019 Machine Zone, Inc. All rights reserved.
*/
#pragma once
#include "IXWebSocketCloseInfo.h"
#include "IXWebSocketErrorInfo.h"
#include "IXWebSocketMessageType.h"
#include "IXWebSocketOpenInfo.h"
#include <memory>
#include <string>
namespace ix
{
struct WebSocketMessage {
WebSocketMessageType type;
const std::string &str;
size_t wireSize;
WebSocketErrorInfo errorInfo;
WebSocketOpenInfo openInfo;
WebSocketCloseInfo closeInfo;
bool binary;
WebSocketMessage(WebSocketMessageType t,
const std::string &s,
size_t w,
WebSocketErrorInfo e,
WebSocketOpenInfo o,
WebSocketCloseInfo c,
bool b = false)
: type(t), str(s), wireSize(w), errorInfo(e), openInfo(o), closeInfo(c),
binary(b)
{
;
}
/**
* @brief Deleted overload to prevent binding `str` to a temporary, which
* would cause undefined behavior since class members don't extend lifetime
* beyond the constructor call.
*/
WebSocketMessage(WebSocketMessageType t,
std::string &&s,
size_t w,
WebSocketErrorInfo e,
WebSocketOpenInfo o,
WebSocketCloseInfo c,
bool b = false) = delete;
};
using WebSocketMessagePtr = std::unique_ptr<WebSocketMessage>;
} // namespace ix