Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(404)

Unified Diff: remoting/protocol/jingle_session.cc

Issue 551173004: Move PseudoTCP and channel auth out of LibjingleTransportFactory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@clean_dgrams
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/protocol/jingle_session.cc
diff --git a/remoting/protocol/jingle_session.cc b/remoting/protocol/jingle_session.cc
index 3638e893746c280b8c1f1a8cbf1125d15309fd1d..c31083161821212b9594b025f2098b0bdd3958cf 100644
--- a/remoting/protocol/jingle_session.cc
+++ b/remoting/protocol/jingle_session.cc
@@ -12,12 +12,15 @@
#include "base/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "remoting/base/constants.h"
+#include "remoting/protocol/authenticated_channel_factory.h"
#include "remoting/protocol/authenticator.h"
#include "remoting/protocol/channel_authenticator.h"
+#include "remoting/protocol/channel_factory.h"
#include "remoting/protocol/channel_multiplexer.h"
#include "remoting/protocol/content_description.h"
#include "remoting/protocol/jingle_messages.h"
#include "remoting/protocol/jingle_session_manager.h"
+#include "remoting/protocol/pseudotcp_channel_factory.h"
#include "remoting/protocol/session_config.h"
#include "remoting/signaling/iq_sender.h"
#include "third_party/libjingle/source/talk/p2p/base/candidate.h"
@@ -187,7 +190,7 @@ void JingleSession::ContinueAcceptIncomingConnection() {
SetState(CONNECTED);
if (authenticator_->state() == Authenticator::ACCEPTED) {
- SetState(AUTHENTICATED);
+ OnAuthenticated();
} else {
DCHECK_EQ(authenticator_->state(), Authenticator::WAITING_MESSAGE);
if (authenticator_->started()) {
@@ -220,13 +223,15 @@ void JingleSession::set_config(const SessionConfig& config) {
ChannelFactory* JingleSession::GetTransportChannelFactory() {
DCHECK(CalledOnValidThread());
- return this;
+ return authenticated_channel_factory_.get();
}
ChannelFactory* JingleSession::GetMultiplexedChannelFactory() {
DCHECK(CalledOnValidThread());
- if (!channel_multiplexer_.get())
- channel_multiplexer_.reset(new ChannelMultiplexer(this, kMuxChannelName));
+ if (!channel_multiplexer_.get()) {
+ channel_multiplexer_.reset(
+ new ChannelMultiplexer(GetTransportChannelFactory(), kMuxChannelName));
+ }
return channel_multiplexer_.get();
}
@@ -254,11 +259,9 @@ void JingleSession::CreateChannel(const std::string& name,
const ChannelCreatedCallback& callback) {
DCHECK(!channels_[name]);
- scoped_ptr<ChannelAuthenticator> channel_authenticator =
- authenticator_->CreateChannelAuthenticator();
- scoped_ptr<StreamTransport> channel =
- session_manager_->transport_factory_->CreateStreamTransport();
- channel->Initialize(name, this, channel_authenticator.Pass());
+ scoped_ptr<Transport> channel =
+ session_manager_->transport_factory_->CreateTransport();
+ channel->Initialize(name, this);
channel->Connect(callback);
AddPendingRemoteCandidates(channel.get(), name);
channels_[name] = channel.release();
@@ -598,13 +601,21 @@ void JingleSession::ProcessAuthenticationStep() {
void JingleSession::ContinueAuthenticationStep() {
if (authenticator_->state() == Authenticator::ACCEPTED) {
- SetState(AUTHENTICATED);
+ OnAuthenticated();
} else if (authenticator_->state() == Authenticator::REJECTED) {
CloseInternal(AuthRejectionReasonToErrorCode(
authenticator_->rejection_reason()));
}
}
+void JingleSession::OnAuthenticated() {
+ pseudotcp_channel_factory_.reset(new PseudoTcpChannelFactory(this));
+ authenticated_channel_factory_.reset(new AuthenticatedChannelFactory(
+ pseudotcp_channel_factory_.get(), authenticator_.get()));
Wez 2014/09/10 02:29:26 nit: Although it's an extra line, I'd suggest wrap
Sergey Ulanov 2014/09/10 21:50:58 Done.
+
+ SetState(AUTHENTICATED);
+}
+
void JingleSession::CloseInternal(ErrorCode error) {
DCHECK(CalledOnValidThread());

Powered by Google App Engine
This is Rietveld 408576698