/* * (c) Copyright, Real-Time Innovations, 2024. * All rights reserved. * * No duplications, whole or partial, manual or electronic, may be made * without express written permission. Any such copies, or * revisions thereof, must display this notice unaltered. * This code contains trade secrets of Real-Time Innovations, Inc. */ #ifndef WEBSOCKET_API_UTILS_H_ #define WEBSOCKET_API_UTILS_H_ #include "dds_c/dds_c_printformat.h" #include #include #define ERR_LOST_HEADER "Lost header" #define WEBSOCKET_RESPONSE_NAME "response" #define WEBSOCKET_HELLO_FAIL_HEADER "HELLO FAIL:" namespace rti { namespace apputils { namespace websocket { enum class WebSocketStateKind{ UNKNOWN, CREATE, OPEN, READY, CLOSE }; enum class WebSocketContentType{ UNKNOWN, JSON, XML }; inline DDS_PrintFormatKind to_print_format_kind(WebSocketContentType contentType) { return contentType == WebSocketContentType::JSON ? DDS_JSON_PRINT_FORMAT : DDS_XML_PRINT_FORMAT; } inline WebSocketContentType to_websocket_content_type(DDS_PrintFormatKind formatKind) { WebSocketContentType value = WebSocketContentType::UNKNOWN; switch (formatKind) { case DDS_JSON_PRINT_FORMAT: value = WebSocketContentType::JSON; break; case DDS_XML_PRINT_FORMAT: value = WebSocketContentType::XML; break; case DDS_DEFAULT_PRINT_FORMAT: value = WebSocketContentType::XML; break; default: value = WebSocketContentType::UNKNOWN; break; } return value; } /** * The RequestException class defines a exception will log an error message * via RTIWsddsLog_exeption or will just propagate a given return code * identifying the error and an error message. The class inherits from * Exception, as a result users can use familiar interfaces, such as what() to * get the error message. Also it have the request id to create the error * message to be sent. */ class RequestException : public rti::apputils::http::HttpException { public: RequestException( const char *throwing_context, rti::apputils::http::StatusCode error_code, const RTILogMessage *log_message, const char *method_name, ...) : HttpException(throwing_context, error_code, log_message), method_name_(method_name) { } /** * Returns the method name that threw the exception. * @return Method name that threw the exception. */ const char * get_method_name() const { return method_name_; } private: const char *method_name_; }; }}} // namespace rti::webdds::websocket #endif // WEBSOCKET_API_UTILS_H_