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 29 class 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 36 public: 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 getUid()42 uid_t getUid() const { return mUid; } getPid()43 pid_t getPid() const { return mPid; } 44 cmp(LogBufferElement * e)45 int cmp(LogBufferElement *e) const { return cmp(e->getUid(), e->getPid()); } 46 47 std::string format(); 48 }; 49 50 typedef std::list<Prune> PruneCollection; 51 52 class PruneList { 53 PruneCollection mNaughty; 54 PruneCollection mNice; 55 bool mWorstUidEnabled; 56 bool mWorstPidOfSystemEnabled; 57 58 public: 59 PruneList(); 60 ~PruneList(); 61 62 int init(const char *str); 63 64 bool naughty(LogBufferElement *element); naughty(void)65 bool naughty(void) { return !mNaughty.empty(); } 66 bool nice(LogBufferElement *element); nice(void)67 bool nice(void) { return !mNice.empty(); } worstUidEnabled()68 bool worstUidEnabled() const { return mWorstUidEnabled; } worstPidOfSystemEnabled()69 bool worstPidOfSystemEnabled() const { return mWorstPidOfSystemEnabled; } 70 71 std::string format(); 72 }; 73 74 #endif // _LOGD_LOG_WHITE_BLACK_LIST_H__ 75