5.1. Encoding

class eprosima::is::sh::websocket::Encoding

This interface class defines all the methods that must be implemented in order to create an encoding to be used to construct and interpret raw WebSocket messages.

eprosima::is::sh::websocket::JsonEncoding: Encoding implementation for message exchanging using JSON format.

Subclassed by eprosima::is::sh::websocket::JsonEncoding

Public Functions

void interpret_websocket_msg(const std::string &msg, Endpoint &endpoint, std::shared_ptr<void> connection_handle) const = 0

Interpret an incoming WebSocket message.

Parameters
  • [in] msg: The message to be interpreted.

  • [in] endpoint: The target endpoint which will perform the actions specified by the message.

  • [in] connection_handle: Opaque pointer which identifies the current connection.

std::string encode_publication_msg(const std::string &topic_name, const std::string &topic_type, const std::string &id, const xtypes::DynamicData &msg) const = 0

Encode a publish message.

Return

A string representation of the encoded publication message, ready to be sent using WebSocket.

Parameters
  • [in] topic_name: The name of the topic where the message will be published to.

  • [in] topic_type: The type name of the topic where the message will be published to.

  • [in] id: The publisher ID.

  • [in] msg: The message data to be published. This will be transformed to JSON format beforehand.

std::string encode_service_response_msg(const std::string &service_name, const std::string &service_type, const std::string &id, const xtypes::DynamicData &response, bool result) const = 0

Encode a service response message.

Return

A string representation of the encoded service response message, ready to be sent using WebSocket.

Parameters
  • [in] service_name: The name of the service which is answering.

  • [in] service_type: The type name of the service reply.

  • [in] id: The service ID.

  • [in] response: The message data containing the service response. This will be transformed to JSON format beforehand.

  • [in] result: Indicates if the response was received or not from the service server.

std::string encode_subscribe_msg(const std::string &topic_name, const std::string &message_type, const std::string &id, const YAML::Node &configuration) const = 0

Encode a subscription message.

Return

A string representation of the encoded subscription message, ready to be sent using WebSocket.

Parameters
  • [in] topic_name: The name of the topic to which the subscription will be performed.

  • [in] message_type: The type name of the topic to which the subscription will be performed.

  • [in] id: The subscriber ID.

  • [in] configuration: Additional configuration that might be required for the subscription operation.

std::string encode_advertise_msg(const std::string &topic_name, const std::string &message_type, const std::string &id, const YAML::Node &configuration) const = 0

Encode an advertisement message. This step is required prior to publish operation.

Return

A string representation of the encoded advertise message, ready to be sent using WebSocket.

Parameters
  • [in] topic_name: The name of the topic to which the advertisement will be performed.

  • [in] message_type: The type name of the topic to which the advertisement will be performed.

  • [in] id: The publisher ID.

  • [in] configuration: Additional configuration that might be required for the advertise operation.

std::string encode_call_service_msg(const std::string &service_name, const std::string &service_type, const xtypes::DynamicData &service_request, const std::string &id, const YAML::Node &configuration) const = 0

Encode a call service message.

Return

A string representation of the encoded call service message, ready to be sent using WebSocket.

Parameters
  • [in] service_name: The name of service to be called.

  • [in] service_type: The type name of the service to be called.

  • [in] service_request: The data of the request message. This will be transformed to JSON format beforehand.

  • [in] id: The service ID.

  • [in] configuration: Additional configuration that might be required for the call service operation.

std::string encode_advertise_service_msg(const std::string &service_name, const std::string &request_type, const std::string &reply_type, const std::string &id, const YAML::Node &configuration) const = 0

Encode an advertise service message. This step is required prior to service call operations.

Return

A string representation of the encoded service advertise message, ready to be sent using WebSocket.

Parameters
  • [in] service_name: The name of the service to which the advertisement will be performed.

  • [in] request_type: The request type name of the service to which the advertisement will be performed.

  • [in] reply_type: The reply type name of the service to which the advertisement will be performed.

  • [in] id: The service ID.

  • [in] configuration: Additional configuration that might be required for the advertise operation.

bool add_type(const xtypes::DynamicType &type, const std::string &type_name = "")

Add a type to the types database.

Return

true if the type was correctly added, or false otherwise.

Parameters
  • [in] type: The dynamic type to be added.

  • [in] type_name: The type name.