| Index: chrome/browser/sync/notifier/communicator/single_login_attempt.h
|
| ===================================================================
|
| --- chrome/browser/sync/notifier/communicator/single_login_attempt.h (revision 46353)
|
| +++ chrome/browser/sync/notifier/communicator/single_login_attempt.h (working copy)
|
| @@ -1,138 +0,0 @@
|
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef CHROME_BROWSER_SYNC_NOTIFIER_COMMUNICATOR_SINGLE_LOGIN_ATTEMPT_H_
|
| -#define CHROME_BROWSER_SYNC_NOTIFIER_COMMUNICATOR_SINGLE_LOGIN_ATTEMPT_H_
|
| -
|
| -#include <string>
|
| -
|
| -#include "chrome/browser/sync/notifier/communicator/login.h"
|
| -#include "talk/base/scoped_ptr.h"
|
| -#include "talk/base/sigslot.h"
|
| -#include "talk/base/task.h"
|
| -#include "talk/xmpp/xmppengine.h"
|
| -
|
| -namespace buzz {
|
| -class AsyncSocket;
|
| -class SaslHandler;
|
| -class XmppClient;
|
| -class XmppClientSettings;
|
| -class XmppClientSettings;
|
| -}
|
| -
|
| -namespace talk_base {
|
| -class FirewallManager;
|
| -struct ProxyInfo;
|
| -class SignalThread;
|
| -class Task;
|
| -}
|
| -
|
| -namespace notifier {
|
| -
|
| -class ConnectionSettings;
|
| -class LoginFailure;
|
| -class LoginSettings;
|
| -struct ServerInformation;
|
| -class XmppConnectionGenerator;
|
| -
|
| -// Handles all of the aspects of a single login attempt (across multiple ip
|
| -// addresses) and maintainence. By containing this within one class, when
|
| -// another login attempt is made, this class will be disposed and all of the
|
| -// signalling for the previous login attempt will be cleaned up immediately.
|
| -//
|
| -// This is a task to allow for cleaning this up when a signal is being fired.
|
| -// Technically, delete this during the firing of a signal could work but it is
|
| -// fragile.
|
| -class SingleLoginAttempt : public talk_base::Task, public sigslot::has_slots<> {
|
| - public:
|
| - SingleLoginAttempt(talk_base::Task* parent,
|
| - LoginSettings* login_settings,
|
| - bool successful_connection);
|
| - ~SingleLoginAttempt();
|
| - virtual int ProcessStart();
|
| - void UseNextConnection();
|
| - void UseCurrentConnection();
|
| -
|
| - buzz::XmppClient* xmpp_client() {
|
| - return client_;
|
| - }
|
| -
|
| - // Returns the proxy that is being used to connect (or the default proxy
|
| - // information if all attempted connections failed).
|
| - const talk_base::ProxyInfo& proxy() const;
|
| -
|
| - // Typically handled by creating a new SingleLoginAttempt and doing
|
| - // StartConnection.
|
| - sigslot::signal0<> SignalUnexpectedDisconnect;
|
| -
|
| - // Typically handled by storing the redirect for 5 seconds, and setting it
|
| - // into LoginSettings, then creating a new SingleLoginAttempt, and doing
|
| - // StartConnection.
|
| - //
|
| - // SignalRedirect(const std::string& redirect_server, int redirect_port);
|
| - sigslot::signal2<const std::string&, int> SignalRedirect;
|
| -
|
| - sigslot::signal0<> SignalNeedAutoReconnect;
|
| -
|
| - // SignalClientStateChange(buzz::XmppEngine::State new_state);
|
| - sigslot::signal1<buzz::XmppEngine::State> SignalClientStateChange;
|
| -
|
| - // See the LoginFailure for how to handle this.
|
| - sigslot::signal1<const LoginFailure&> SignalLoginFailure;
|
| -
|
| - // Sent when there is a graceful log-off (state goes to closed with no
|
| - // error).
|
| - sigslot::signal0<> SignalLogoff;
|
| -
|
| - sigslot::repeater2<const char*, int> SignalLogInput;
|
| - sigslot::repeater2<const char*, int> SignalLogOutput;
|
| -
|
| - protected:
|
| - virtual void Stop();
|
| -
|
| - private:
|
| - void DoLogin(const ConnectionSettings& connection_settings);
|
| - buzz::AsyncSocket* CreateSocket(const buzz::XmppClientSettings& xcs);
|
| - static buzz::SaslHandler* CreateSaslHandler(
|
| - const buzz::XmppClientSettings& xcs);
|
| -
|
| - // Cleans up any xmpp client state to get ready for a new one.
|
| - void ClearClient();
|
| -
|
| - void HandleConnectionError(
|
| - buzz::XmppEngine::Error code,
|
| - int subcode,
|
| - const buzz::XmlElement* stream_error);
|
| - void HandleConnectionPasswordError();
|
| -
|
| - void DiagnoseConnectionError();
|
| - void OnHttpTestDone(talk_base::SignalThread* thread);
|
| -
|
| - void OnAuthenticationError();
|
| - void OnCertificateExpired();
|
| - void OnFreshAuthCookie(const std::string& auth_cookie);
|
| - void OnClientStateChange(buzz::XmppEngine::State state);
|
| - void OnClientStateChangeClosed(buzz::XmppEngine::State previous_state);
|
| - void OnAttemptedAllConnections(bool successfully_resolved_dns,
|
| - int first_dns_error);
|
| -
|
| - bool auto_reconnect() const;
|
| -
|
| - buzz::XmppEngine::State state_;
|
| - buzz::XmppEngine::Error code_;
|
| - int subcode_;
|
| - bool need_authentication_;
|
| - bool certificate_expired_;
|
| - bool cookie_refreshed_;
|
| - bool successful_connection_;
|
| - LoginSettings* login_settings_;
|
| - buzz::XmppClient* client_;
|
| - scoped_ptr<XmppConnectionGenerator> connection_generator_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SingleLoginAttempt);
|
| -};
|
| -
|
| -} // namespace notifier
|
| -
|
| -#endif // CHROME_BROWSER_SYNC_NOTIFIER_COMMUNICATOR_SINGLE_LOGIN_ATTEMPT_H_
|
|
|