blob: 69951893c66bb77320c392b5b379880fb6ce469d [file] [log] [blame]
Elad Alon83ccca12017-10-04 13:18:26 +02001/*
2 * Copyright (c) 2017 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
Steve Anton10542f22019-01-11 09:11:00 -080011#ifndef API_RTC_EVENT_LOG_OUTPUT_H_
12#define API_RTC_EVENT_LOG_OUTPUT_H_
Elad Alon83ccca12017-10-04 13:18:26 +020013
14#include <string>
15
Björn Terelius63299a32022-07-05 10:58:52 +020016#include "absl/strings/string_view.h"
17
Elad Alon83ccca12017-10-04 13:18:26 +020018namespace webrtc {
19
Elad Alon80810732017-10-06 13:07:32 +020020// NOTE: This class is still under development and may change without notice.
Elad Alon83ccca12017-10-04 13:18:26 +020021class RtcEventLogOutput {
22 public:
23 virtual ~RtcEventLogOutput() = default;
24
25 // An output normally starts out active, though that might not always be
26 // the case (e.g. failed to open a file for writing).
27 // Once an output has become inactive (e.g. maximum file size reached), it can
28 // never become active again.
29 virtual bool IsActive() const = 0;
30
31 // Write encoded events to an output. Returns true if the output was
32 // successfully written in its entirety. Otherwise, no guarantee is given
33 // about how much data was written, if any. The output sink becomes inactive
Artem Titov0e61fdd2021-07-25 21:50:14 +020034 // after the first time `false` is returned. Write() may not be called on
Elad Alon83ccca12017-10-04 13:18:26 +020035 // an inactive output sink.
36 virtual bool Write(const std::string& output) = 0;
Björn Terelius63299a32022-07-05 10:58:52 +020037 // TODO(bugs.webrtc.org/13579): Make pure virtual and remove the string ref
38 // once all classes implement the string_view version.
39 virtual bool Write(absl::string_view output) {
40 return Write(std::string(output));
41 }
Sebastian Jansson52de8b02019-01-16 17:25:44 +010042
43 // Indicates that buffers should be written to disk if applicable.
44 virtual void Flush() {}
Elad Alon83ccca12017-10-04 13:18:26 +020045};
46
47} // namespace webrtc
48
Steve Anton10542f22019-01-11 09:11:00 -080049#endif // API_RTC_EVENT_LOG_OUTPUT_H_