// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef REMOTING_HOST_HEARTBEAT_SENDER_H_ #define REMOTING_HOST_HEARTBEAT_SENDER_H_ #include <memory> #include <optional> #include <string> #include <optional> #include "base/functional/callback.h" #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "base/timer/timer.h" #include "net/base/backoff_entry.h" #include "remoting/proto/remoting/v1/directory_messages.pb.h" #include "remoting/signaling/signal_strategy.h" namespace base { class TimeDelta; } // namespace base namespace network { class SharedURLLoaderFactory; } // namespace network namespace remoting { class OAuthTokenGetter; class ProtobufHttpStatus; // HeartbeatSender periodically sends heartbeat to the directory service. See // the HeartbeatRequest message in directory_messages.proto for more details. // // Normally the heartbeat indicates that the host is healthy and ready to // accept new connections from a client, but the message can optionally include // a host_offline_reason field, which indicates that the host cannot accept // connections from the client (and might possibly be shutting down). The value // of the host_offline_reason field can be either a string from // host_exit_codes.cc (i.e. "INVALID_HOST_CONFIGURATION" string) or one of // kHostOfflineReasonXxx constants (i.e. "POLICY_READ_ERROR" string). // // The heartbeat sender will verify that the channel is in fact active before // sending out the heartbeat. If not, it will disconnect the signaling strategy // so that the signaling connector will try to reconnect signaling. // // The server sends a HeartbeatResponse in response to each successful // heartbeat. class HeartbeatSender final : public SignalStrategy::Listener { … }; } // namespace remoting #endif // REMOTING_HOST_HEARTBEAT_SENDER_H_