| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ASH_WEBUI_ECHE_APP_UI_ECHE_CONNECTION_SCHEDULER_H_ |
| #define ASH_WEBUI_ECHE_APP_UI_ECHE_CONNECTION_SCHEDULER_H_ |
| |
| namespace ash { |
| namespace eche_app { |
| |
| // Responsible for requesting connection from the local device |
| // (e.g. this chromebook) to the user's phone. Will also attempt to connect |
| // whenever possible and retries upon error with exponential backoff. |
| class EcheConnectionScheduler { |
| public: |
| EcheConnectionScheduler(const EcheConnectionScheduler&) = delete; |
| EcheConnectionScheduler& operator=(const EcheConnectionScheduler&) = delete; |
| virtual ~EcheConnectionScheduler() = default; |
| |
| // Attempts a connection immediately, will be exponentially backed-off upon |
| // failing to establish a connection. |
| virtual void ScheduleConnectionNow() = 0; |
| |
| // Invalidate all pending backoff attempts and disconnects the current |
| // connection attempt. |
| virtual void DisconnectAndClearBackoffAttempts() = 0; |
| |
| protected: |
| EcheConnectionScheduler() = default; |
| }; |
| |
| } // namespace eche_app |
| } // namespace ash |
| |
| #endif // ASH_WEBUI_ECHE_APP_UI_ECHE_CONNECTION_SCHEDULER_H_ |