1/* 2 * Copyright (C) 2014 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 17#ifndef _LOGD_LOG_WHITE_BLACK_LIST_H__ 18#define _LOGD_LOG_WHITE_BLACK_LIST_H__ 19 20#include <sys/types.h> 21 22#include <list> 23#include <string.h> 24 25#include "LogBufferElement.h" 26 27// White and Blacklist 28 29class Prune { 30 friend class PruneList; 31 32 const uid_t mUid; 33 const pid_t mPid; 34 int cmp(uid_t uid, pid_t pid) const; 35 36public: 37 static const uid_t uid_all = (uid_t) -1; 38 static const pid_t pid_all = (pid_t) -1; 39 40 Prune(uid_t uid, pid_t pid); 41 42 uid_t getUid() const { return mUid; } 43 pid_t getPid() const { return mPid; } 44 45 int cmp(LogBufferElement *e) const { return cmp(e->getUid(), e->getPid()); } 46 47 std::string format(); 48}; 49 50typedef std::list<Prune> PruneCollection; 51 52class PruneList { 53 PruneCollection mNaughty; 54 PruneCollection mNice; 55 bool mWorstUidEnabled; 56 bool mWorstPidOfSystemEnabled; 57 58public: 59 PruneList(); 60 ~PruneList(); 61 62 int init(const char *str); 63 64 bool naughty(LogBufferElement *element); 65 bool naughty(void) { return !mNaughty.empty(); } 66 bool nice(LogBufferElement *element); 67 bool nice(void) { return !mNice.empty(); } 68 bool worstUidEnabled() const { return mWorstUidEnabled; } 69 bool worstPidOfSystemEnabled() const { return mWorstPidOfSystemEnabled; } 70 71 std::string format(); 72}; 73 74#endif // _LOGD_LOG_WHITE_BLACK_LIST_H__ 75