diff options
Diffstat (limited to 'cast/streaming/sender_session.cc')
-rw-r--r-- | cast/streaming/sender_session.cc | 35 |
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 |