in chime-sdk-signaling-cpp/src/signaling/default_signaling_client.cc [77:112]
void DefaultSignalingClient::SendDataMessage(const DataMessageToSend& data_message_to_send) {
if (state_ != SignalingState::kConnected) {
return;
}
std::vector<DataMessageSendError> data_message_send_errors;
if (data_message_to_send.data.size() > kMaxSize) {
data_message_send_errors.push_back(
BuildDataMessageError(data_message_to_send, DataMessageSendErrorReason::kInvalidDataMessageSize));
} else if (!std::regex_match(data_message_to_send.topic, kTopicRegex)) {
data_message_send_errors.push_back(
BuildDataMessageError(data_message_to_send, DataMessageSendErrorReason::kInvalidTopic));
} else if (data_message_to_send.lifetime_ms < 0) {
data_message_send_errors.push_back(
BuildDataMessageError(data_message_to_send, DataMessageSendErrorReason::kInvalidLifeTimeMs));
}
if (!data_message_send_errors.empty()) {
NotifySignalingObserver([&data_message_send_errors](SignalingClientObserver* observer) -> void {
observer->OnDataMessagesFailedToSend(data_message_send_errors);
});
return;
}
signal_sdk::SdkSignalFrame signal_frame;
signal_frame.set_type(signal_sdk::SdkSignalFrame_Type_DATA_MESSAGE);
signal_sdk::SdkDataMessageFrame* data_message_frame = signal_frame.mutable_data_message();
signal_sdk::SdkDataMessagePayload message_payload = signal_sdk::SdkDataMessagePayload();
message_payload.set_topic(data_message_to_send.topic);
message_payload.set_data(data_message_to_send.data);
message_payload.set_lifetime_ms(data_message_to_send.lifetime_ms);
*data_message_frame->add_messages() = message_payload;
signaling_transport_->SendSignalFrame(signal_frame);
}