blob: 543dfc3d7b883d63acf41aede10dd1671e525a07 [file] [log] [blame]
Mark Salyzyn0175b072014-02-26 09:50:16 -08001/*
2 * Copyright (C) 2012-2013 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#ifndef _FLUSH_COMMAND_H
17#define _FLUSH_COMMAND_H
18
Mark Salyzyn5a34d6e2017-03-10 08:44:14 -080019#include <private/android_logger.h>
Mark Salyzyn0175b072014-02-26 09:50:16 -080020#include <sysutils/SocketClientCommand.h>
21
Mark Salyzynfa3716b2014-02-14 16:05:05 -080022class LogBufferElement;
23
24#include "LogTimes.h"
25
Mark Salyzyn0175b072014-02-26 09:50:16 -080026class LogReader;
27
28class FlushCommand : public SocketClientCommand {
Mark Salyzyn501c3732017-03-10 14:31:54 -080029 LogReader& mReader;
Mark Salyzyn0175b072014-02-26 09:50:16 -080030 bool mNonBlock;
31 unsigned long mTail;
Hao Wangf6e22962017-12-04 14:10:40 +080032 log_mask_t mLogMask;
Mark Salyzyn0175b072014-02-26 09:50:16 -080033 pid_t mPid;
Mark Salyzyn5a34d6e2017-03-10 08:44:14 -080034 log_time mStart;
Mark Salyzynb75cce02015-11-30 11:35:56 -080035 uint64_t mTimeout;
Mark Salyzyn0175b072014-02-26 09:50:16 -080036
Mark Salyzyn501c3732017-03-10 14:31:54 -080037 public:
Hao Wangf6e22962017-12-04 14:10:40 +080038 // for opening a reader
39 explicit FlushCommand(LogReader& reader, bool nonBlock, unsigned long tail,
40 log_mask_t logMask, pid_t pid, log_time start,
41 uint64_t timeout)
42 : mReader(reader),
43 mNonBlock(nonBlock),
44 mTail(tail),
45 mLogMask(logMask),
46 mPid(pid),
47 mStart(start),
48 mTimeout((start != log_time::EPOCH) ? timeout : 0) {
49 }
50
51 // for notification of an update
52 explicit FlushCommand(LogReader& reader, log_mask_t logMask)
53 : mReader(reader),
54 mNonBlock(false),
55 mTail(-1),
56 mLogMask(logMask),
57 mPid(0),
58 mStart(log_time::EPOCH),
59 mTimeout(0) {
60 }
61
Mark Salyzyn501c3732017-03-10 14:31:54 -080062 virtual void runSocketCommand(SocketClient* client);
Mark Salyzyn0175b072014-02-26 09:50:16 -080063
Mark Salyzyn501c3732017-03-10 14:31:54 -080064 static bool hasReadLogs(SocketClient* client);
65 static bool hasSecurityLogs(SocketClient* client);
Mark Salyzyn0175b072014-02-26 09:50:16 -080066};
67
68#endif