blob: d599207860cce9a38bc4f767074ef0ebd40705f7 [file] [log] [blame]
Henrik Boströmb04b2a12019-12-10 14:14:09 +01001/*
2 * Copyright 2019 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "call/adaptation/resource.h"
12
Henrik Boström48258ac2020-02-06 12:49:57 +010013#include "rtc_base/checks.h"
Henrik Boströmb04b2a12019-12-10 14:14:09 +010014
15namespace webrtc {
16
Henrik Boström48258ac2020-02-06 12:49:57 +010017ResourceListener::~ResourceListener() {}
Henrik Boströmb04b2a12019-12-10 14:14:09 +010018
Henrik Boström48258ac2020-02-06 12:49:57 +010019Resource::Resource() : usage_state_(ResourceUsageState::kStable) {}
Henrik Boströmb04b2a12019-12-10 14:14:09 +010020
21Resource::~Resource() {}
22
Henrik Boström48258ac2020-02-06 12:49:57 +010023void Resource::RegisterListener(ResourceListener* listener) {
24 RTC_DCHECK(listener);
25 listeners_.push_back(listener);
26}
27
28ResourceUsageState Resource::usage_state() const {
29 return usage_state_;
30}
31
32ResourceListenerResponse Resource::OnResourceUsageStateMeasured(
33 ResourceUsageState usage_state) {
34 ResourceListenerResponse response = ResourceListenerResponse::kNothing;
35 usage_state_ = usage_state;
36 for (auto* listener : listeners_) {
37 ResourceListenerResponse listener_response =
38 listener->OnResourceUsageStateMeasured(*this);
39 if (listener_response != ResourceListenerResponse::kNothing)
40 response = listener_response;
41 }
42 return response;
Henrik Boströmb04b2a12019-12-10 14:14:09 +010043}
44
45} // namespace webrtc