xref: /aosp_15_r20/external/cronet/net/nqe/event_creator.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2017 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef NET_NQE_EVENT_CREATOR_H_
6*6777b538SAndroid Build Coastguard Worker #define NET_NQE_EVENT_CREATOR_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include <stdint.h>
9*6777b538SAndroid Build Coastguard Worker 
10*6777b538SAndroid Build Coastguard Worker #include "base/sequence_checker.h"
11*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h"
12*6777b538SAndroid Build Coastguard Worker #include "net/log/net_log_with_source.h"
13*6777b538SAndroid Build Coastguard Worker #include "net/nqe/effective_connection_type.h"
14*6777b538SAndroid Build Coastguard Worker #include "net/nqe/network_quality.h"
15*6777b538SAndroid Build Coastguard Worker 
16*6777b538SAndroid Build Coastguard Worker namespace net {
17*6777b538SAndroid Build Coastguard Worker 
18*6777b538SAndroid Build Coastguard Worker class NetLogWithSource;
19*6777b538SAndroid Build Coastguard Worker 
20*6777b538SAndroid Build Coastguard Worker namespace nqe::internal {
21*6777b538SAndroid Build Coastguard Worker 
22*6777b538SAndroid Build Coastguard Worker // Class that adds net log events for network quality estimator.
23*6777b538SAndroid Build Coastguard Worker class NET_EXPORT_PRIVATE EventCreator {
24*6777b538SAndroid Build Coastguard Worker  public:
25*6777b538SAndroid Build Coastguard Worker   explicit EventCreator(NetLogWithSource net_log);
26*6777b538SAndroid Build Coastguard Worker 
27*6777b538SAndroid Build Coastguard Worker   EventCreator(const EventCreator&) = delete;
28*6777b538SAndroid Build Coastguard Worker   EventCreator& operator=(const EventCreator&) = delete;
29*6777b538SAndroid Build Coastguard Worker 
30*6777b538SAndroid Build Coastguard Worker   ~EventCreator();
31*6777b538SAndroid Build Coastguard Worker 
32*6777b538SAndroid Build Coastguard Worker   // May add network quality changed event to the net-internals log if there
33*6777b538SAndroid Build Coastguard Worker   // is a change in the effective connection type, or if there is a meaningful
34*6777b538SAndroid Build Coastguard Worker   // change in the values of HTTP RTT, transport RTT or bandwidth.
35*6777b538SAndroid Build Coastguard Worker   // |effective_connection_type| is the current effective connection type.
36*6777b538SAndroid Build Coastguard Worker   // |network_quality| is the current network quality.
37*6777b538SAndroid Build Coastguard Worker   void MaybeAddNetworkQualityChangedEventToNetLog(
38*6777b538SAndroid Build Coastguard Worker       EffectiveConnectionType effective_connection_type,
39*6777b538SAndroid Build Coastguard Worker       const NetworkQuality& network_quality);
40*6777b538SAndroid Build Coastguard Worker 
41*6777b538SAndroid Build Coastguard Worker  private:
42*6777b538SAndroid Build Coastguard Worker   NetLogWithSource net_log_;
43*6777b538SAndroid Build Coastguard Worker 
44*6777b538SAndroid Build Coastguard Worker   // The effective connection type when the net log event was last added.
45*6777b538SAndroid Build Coastguard Worker   EffectiveConnectionType past_effective_connection_type_ =
46*6777b538SAndroid Build Coastguard Worker       EFFECTIVE_CONNECTION_TYPE_UNKNOWN;
47*6777b538SAndroid Build Coastguard Worker 
48*6777b538SAndroid Build Coastguard Worker   //  The network quality when the net log event was last added.
49*6777b538SAndroid Build Coastguard Worker   NetworkQuality past_network_quality_;
50*6777b538SAndroid Build Coastguard Worker 
51*6777b538SAndroid Build Coastguard Worker   SEQUENCE_CHECKER(sequence_checker_);
52*6777b538SAndroid Build Coastguard Worker };
53*6777b538SAndroid Build Coastguard Worker 
54*6777b538SAndroid Build Coastguard Worker }  // namespace nqe::internal
55*6777b538SAndroid Build Coastguard Worker 
56*6777b538SAndroid Build Coastguard Worker }  // namespace net
57*6777b538SAndroid Build Coastguard Worker 
58*6777b538SAndroid Build Coastguard Worker #endif  // NET_NQE_EVENT_CREATOR_H_
59