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

Side by Side Diff: jingle/notifier/communicator/auto_reconnect.h

Issue 2809056: Rewrote handing of auto-reconnection and network changes for sync notifier. (Closed)
Patch Set: Fixed bug Created 10 years, 4 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 unified diff | Download patch
« no previous file with comments | « jingle/jingle.gyp ('k') | jingle/notifier/communicator/auto_reconnect.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef JINGLE_NOTIFIER_COMMUNICATOR_AUTO_RECONNECT_H_
6 #define JINGLE_NOTIFIER_COMMUNICATOR_AUTO_RECONNECT_H_
7
8 #include <string>
9
10 #include "base/time.h"
11 #include "base/timer.h"
12 #include "jingle/notifier/communicator/login_connection_state.h"
13 #include "talk/base/sigslot.h"
14
15 namespace notifier {
16
17 class AutoReconnect : public sigslot::has_slots<> {
18 public:
19 AutoReconnect();
20 void StartReconnectTimer();
21 void StopReconnectTimer();
22 void OnClientStateChange(LoginConnectionState state);
23
24 void NetworkStateChanged(bool is_alive);
25
26 // Callback when power is suspended.
27 void OnPowerSuspend(bool suspended);
28
29 void set_idle(bool idle) {
30 is_idle_ = idle;
31 }
32
33 // Returns true if the auto-retry is to be done (pending a countdown).
34 bool is_retrying() const {
35 return reconnect_timer_started_;
36 }
37
38 sigslot::signal0<> SignalTimerStartStop;
39 sigslot::signal0<> SignalStartConnection;
40
41 private:
42 void StartReconnectTimerWithInterval(base::TimeDelta interval);
43 void DoReconnect();
44 void ResetState();
45 void SetupReconnectInterval();
46 void StopDelayedResetTimer();
47
48 base::TimeDelta reconnect_interval_;
49 bool reconnect_timer_started_;
50 base::OneShotTimer<AutoReconnect> reconnect_timer_;
51 base::OneShotTimer<AutoReconnect> delayed_reset_timer_;
52
53 bool is_idle_;
54 DISALLOW_COPY_AND_ASSIGN(AutoReconnect);
55 };
56
57 // Wait 2 seconds until after we actually connect to reset reconnect related
58 // items.
59 //
60 // The reason for this delay is to avoid the situation in which buzz is trying
61 // to block the client due to abuse and the client responses by going into
62 // rapid reconnect mode, which makes the problem more severe.
63 extern const int kResetReconnectInfoDelaySec;
64
65 } // namespace notifier
66
67 #endif // JINGLE_NOTIFIER_COMMUNICATOR_AUTO_RECONNECT_H_
OLDNEW
« no previous file with comments | « jingle/jingle.gyp ('k') | jingle/notifier/communicator/auto_reconnect.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698