/* * 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 #include 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; } // namespace ix