xref: /aosp_15_r20/external/webrtc/sdk/objc/api/peerconnection/RTCFileLogger.h (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #import <Foundation/Foundation.h>
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #import "RTCMacros.h"
14*d9f75844SAndroid Build Coastguard Worker 
15*d9f75844SAndroid Build Coastguard Worker typedef NS_ENUM(NSUInteger, RTCFileLoggerSeverity) {
16*d9f75844SAndroid Build Coastguard Worker   RTCFileLoggerSeverityVerbose,
17*d9f75844SAndroid Build Coastguard Worker   RTCFileLoggerSeverityInfo,
18*d9f75844SAndroid Build Coastguard Worker   RTCFileLoggerSeverityWarning,
19*d9f75844SAndroid Build Coastguard Worker   RTCFileLoggerSeverityError
20*d9f75844SAndroid Build Coastguard Worker };
21*d9f75844SAndroid Build Coastguard Worker 
22*d9f75844SAndroid Build Coastguard Worker typedef NS_ENUM(NSUInteger, RTCFileLoggerRotationType) {
23*d9f75844SAndroid Build Coastguard Worker   RTCFileLoggerTypeCall,
24*d9f75844SAndroid Build Coastguard Worker   RTCFileLoggerTypeApp,
25*d9f75844SAndroid Build Coastguard Worker };
26*d9f75844SAndroid Build Coastguard Worker 
27*d9f75844SAndroid Build Coastguard Worker NS_ASSUME_NONNULL_BEGIN
28*d9f75844SAndroid Build Coastguard Worker 
29*d9f75844SAndroid Build Coastguard Worker // This class intercepts WebRTC logs and saves them to a file. The file size
30*d9f75844SAndroid Build Coastguard Worker // will not exceed the given maximum bytesize. When the maximum bytesize is
31*d9f75844SAndroid Build Coastguard Worker // reached, logs are rotated according to the rotationType specified.
32*d9f75844SAndroid Build Coastguard Worker // For kRTCFileLoggerTypeCall, logs from the beginning and the end
33*d9f75844SAndroid Build Coastguard Worker // are preserved while the middle section is overwritten instead.
34*d9f75844SAndroid Build Coastguard Worker // For kRTCFileLoggerTypeApp, the oldest log is overwritten.
35*d9f75844SAndroid Build Coastguard Worker // This class is not threadsafe.
36*d9f75844SAndroid Build Coastguard Worker RTC_OBJC_EXPORT
37*d9f75844SAndroid Build Coastguard Worker @interface RTC_OBJC_TYPE (RTCFileLogger) : NSObject
38*d9f75844SAndroid Build Coastguard Worker 
39*d9f75844SAndroid Build Coastguard Worker // The severity level to capture. The default is kRTCFileLoggerSeverityInfo.
40*d9f75844SAndroid Build Coastguard Worker @property(nonatomic, assign) RTCFileLoggerSeverity severity;
41*d9f75844SAndroid Build Coastguard Worker 
42*d9f75844SAndroid Build Coastguard Worker // The rotation type for this file logger. The default is
43*d9f75844SAndroid Build Coastguard Worker // kRTCFileLoggerTypeCall.
44*d9f75844SAndroid Build Coastguard Worker @property(nonatomic, readonly) RTCFileLoggerRotationType rotationType;
45*d9f75844SAndroid Build Coastguard Worker 
46*d9f75844SAndroid Build Coastguard Worker // Disables buffering disk writes. Should be set before `start`. Buffering
47*d9f75844SAndroid Build Coastguard Worker // is enabled by default for performance.
48*d9f75844SAndroid Build Coastguard Worker @property(nonatomic, assign) BOOL shouldDisableBuffering;
49*d9f75844SAndroid Build Coastguard Worker 
50*d9f75844SAndroid Build Coastguard Worker // Default constructor provides default settings for dir path, file size and
51*d9f75844SAndroid Build Coastguard Worker // rotation type.
52*d9f75844SAndroid Build Coastguard Worker - (instancetype)init;
53*d9f75844SAndroid Build Coastguard Worker 
54*d9f75844SAndroid Build Coastguard Worker // Create file logger with default rotation type.
55*d9f75844SAndroid Build Coastguard Worker - (instancetype)initWithDirPath:(NSString *)dirPath maxFileSize:(NSUInteger)maxFileSize;
56*d9f75844SAndroid Build Coastguard Worker 
57*d9f75844SAndroid Build Coastguard Worker - (instancetype)initWithDirPath:(NSString *)dirPath
58*d9f75844SAndroid Build Coastguard Worker                     maxFileSize:(NSUInteger)maxFileSize
59*d9f75844SAndroid Build Coastguard Worker                    rotationType:(RTCFileLoggerRotationType)rotationType NS_DESIGNATED_INITIALIZER;
60*d9f75844SAndroid Build Coastguard Worker 
61*d9f75844SAndroid Build Coastguard Worker // Starts writing WebRTC logs to disk if not already started. Overwrites any
62*d9f75844SAndroid Build Coastguard Worker // existing file(s).
63*d9f75844SAndroid Build Coastguard Worker - (void)start;
64*d9f75844SAndroid Build Coastguard Worker 
65*d9f75844SAndroid Build Coastguard Worker // Stops writing WebRTC logs to disk. This method is also called on dealloc.
66*d9f75844SAndroid Build Coastguard Worker - (void)stop;
67*d9f75844SAndroid Build Coastguard Worker 
68*d9f75844SAndroid Build Coastguard Worker // Returns the current contents of the logs, or nil if start has been called
69*d9f75844SAndroid Build Coastguard Worker // without a stop.
70*d9f75844SAndroid Build Coastguard Worker - (nullable NSData *)logData;
71*d9f75844SAndroid Build Coastguard Worker 
72*d9f75844SAndroid Build Coastguard Worker @end
73*d9f75844SAndroid Build Coastguard Worker 
74*d9f75844SAndroid Build Coastguard Worker NS_ASSUME_NONNULL_END
75