1a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu/* 2a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** 3a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** Copyright 2015, The Android Open Source Project 4a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** 5a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** Licensed under the Apache License, Version 2.0 (the "License"); 6a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** you may not use this file except in compliance with the License. 7a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** You may obtain a copy of the License at 8a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** 9a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** http://www.apache.org/licenses/LICENSE-2.0 10a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** 11a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** Unless required by applicable law or agreed to in writing, software 12a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** distributed under the License is distributed on an "AS IS" BASIS, 13a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** See the License for the specific language governing permissions and 15a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu** limitations under the License. 16a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu*/ 17a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu 18a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu#ifndef ANDROID_SERVICELOG_H 19a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu#define ANDROID_SERVICELOG_H 20a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu 21a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu#include <utils/Errors.h> 22a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu#include <utils/String8.h> 23a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu#include <utils/threads.h> 24a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu#include <utils/Vector.h> 25a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu 26022ed72e650f756288492ac7a10a7b41e0b14f82Ronghua Wu#include "media/RingBuffer.h" 27022ed72e650f756288492ac7a10a7b41e0b14f82Ronghua Wu 28a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wunamespace android { 29a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu 30a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wuclass ServiceLog : public RefBase { 31a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wupublic: 32a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu ServiceLog(); 33a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu ServiceLog(size_t maxNum); 34a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu 35a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu void add(const String8 &log); 36022ed72e650f756288492ac7a10a7b41e0b14f82Ronghua Wu String8 toString(const char *linePrefix = NULL) const; 37a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu 38a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wuprivate: 39022ed72e650f756288492ac7a10a7b41e0b14f82Ronghua Wu size_t mMaxNum; 40a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu mutable Mutex mLock; 41022ed72e650f756288492ac7a10a7b41e0b14f82Ronghua Wu RingBuffer<String8> mLogs; 42022ed72e650f756288492ac7a10a7b41e0b14f82Ronghua Wu 43022ed72e650f756288492ac7a10a7b41e0b14f82Ronghua Wu void addLine(const char *log, const char *prefix, String8 *result) const; 44a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu}; 45a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu 46a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu// ---------------------------------------------------------------------------- 47a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu 48a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu}; // namespace android 49a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu 50a8ec8fcf6982ef158daf897faaab3e45285d0bf1Ronghua Wu#endif // ANDROID_SERVICELOG_H 51