aboutsummaryrefslogtreecommitdiff
path: root/cast/streaming/sender_session.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cast/streaming/sender_session.cc')
-rw-r--r--cast/streaming/sender_session.cc35
1 files changed, 16 insertions, 19 deletions
diff --git a/cast/streaming/sender_session.cc b/cast/streaming/sender_session.cc
index bbb3972f..f59f0d70 100644
--- a/cast/streaming/sender_session.cc
+++ b/cast/streaming/sender_session.cc
@@ -210,6 +210,9 @@ SenderSession::SenderSession(Configuration config)
config_.client->OnError(this, error);
},
config_.environment->task_runner()),
+ rpc_messenger_([this](std::vector<uint8_t> message) {
+ SendRpcMessage(std::move(message));
+ }),
packet_router_(config_.environment) {
OSP_DCHECK(config_.client);
OSP_DCHECK(config_.environment);
@@ -265,7 +268,6 @@ void SenderSession::ResetState() {
current_negotiation_.reset();
current_audio_sender_.reset();
current_video_sender_.reset();
- rpc_messenger_.reset();
}
Error SenderSession::StartNegotiation(
@@ -299,7 +301,7 @@ void SenderSession::OnAnswer(ReceiverMessage message) {
return;
}
- state_ = State::kMirroring;
+ state_ = State::kStreaming;
config_.client->OnNegotiated(
this, std::move(senders),
capture_recommendations::GetRecommendations(answer));
@@ -361,27 +363,12 @@ void SenderSession::OnCapabilitiesResponse(ReceiverMessage message) {
"Failed to negotiate a remoting session."));
return;
}
- rpc_messenger_ = std::make_unique<RpcMessenger>([this](std::vector<uint8_t> message) {
- Error error = this->messenger_.SendOutboundMessage(SenderMessage{
- SenderMessage::Type::kRpc, ++(this->current_sequence_number_), true,
- std::move(message)});
-
- if (!error.ok()) {
- OSP_LOG_WARN << "Failed to send RPC message: " << error;
- }
- });
config_.client->OnRemotingNegotiated(
- this, RemotingNegotiation{std::move(senders), ToCapabilities(caps),
- rpc_messenger_.get()});
+ this, RemotingNegotiation{std::move(senders), ToCapabilities(caps)});
}
void SenderSession::OnRpcMessage(ReceiverMessage message) {
- if (!rpc_messenger_) {
- OSP_LOG_INFO << "Received an RPC message without having an RPCMessenger.";
- return;
- }
-
if (!message.valid) {
HandleErrorMessage(
message,
@@ -390,7 +377,7 @@ void SenderSession::OnRpcMessage(ReceiverMessage message) {
}
const auto& body = absl::get<std::vector<uint8_t>>(message.body);
- rpc_messenger_->ProcessMessageFromRemote(body.data(), body.size());
+ rpc_messenger_.ProcessMessageFromRemote(body.data(), body.size());
}
void SenderSession::HandleErrorMessage(ReceiverMessage message,
@@ -492,5 +479,15 @@ SenderSession::ConfiguredSenders SenderSession::SpawnSenders(
return senders;
}
+void SenderSession::SendRpcMessage(std::vector<uint8_t> message_body) {
+ Error error = this->messenger_.SendOutboundMessage(SenderMessage{
+ SenderMessage::Type::kRpc, ++(this->current_sequence_number_), true,
+ std::move(message_body)});
+
+ if (!error.ok()) {
+ OSP_LOG_WARN << "Failed to send RPC message: " << error;
+ }
+}
+
} // namespace cast
} // namespace openscreen