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