MediaLogService.h revision fdf4e4f1859771b95585cbc87f8cd038ea2815c6
1697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明/* 2697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * Copyright (C) 2013 The Android Open Source Project 3697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * 4697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * Licensed under the Apache License, Version 2.0 (the "License"); 5697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * you may not use this file except in compliance with the License. 6697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * You may obtain a copy of the License at 7697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * 8697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * http://www.apache.org/licenses/LICENSE-2.0 9697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * 10697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * Unless required by applicable law or agreed to in writing, software 11697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * distributed under the License is distributed on an "AS IS" BASIS, 12697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * See the License for the specific language governing permissions and 14697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 * limitations under the License. 15697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 */ 16697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 17697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明#ifndef ANDROID_MEDIA_LOG_SERVICE_H 18697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明#define ANDROID_MEDIA_LOG_SERVICE_H 19697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 20697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明#include <binder/BinderService.h> 21697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明#include <media/IMediaLogService.h> 22697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明#include <media/nbaio/NBLog.h> 23697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 24697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明namespace android { 25697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 26697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明class MediaLogService : public BinderService<MediaLogService>, public BnMediaLogService 27697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明{ 28697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 friend class BinderService<MediaLogService>; // for MediaLogService() 29697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明public: 30697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 MediaLogService() : BnMediaLogService() { } 31697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 virtual ~MediaLogService() { } 32697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 virtual void onFirstRef() { } 33697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 34697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 static const char* getServiceName() { return "media.log"; } 35697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 36697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 static const size_t kMinSize = 0x100; 37697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 static const size_t kMaxSize = 0x10000; 38697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 virtual void registerWriter(const sp<IMemory>& shared, size_t size, const char *name); 39697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 virtual void unregisterWriter(const sp<IMemory>& shared); 40697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 41697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 virtual status_t dump(int fd, const Vector<String16>& args); 42697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 virtual status_t onTransact(uint32_t code, const Parcel& data, Parcel* reply, 43697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 uint32_t flags); 44697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 45697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明private: 46697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 Mutex mLock; 47697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 class NamedReader { 48697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 public: 49697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 NamedReader() : mReader(0) { mName[0] = '\0'; } // for Vector 50697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 NamedReader(const sp<NBLog::Reader>& reader, const char *name) : mReader(reader) 51697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 { strlcpy(mName, name, sizeof(mName)); } 52697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 ~NamedReader() { } 53697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 const sp<NBLog::Reader>& reader() const { return mReader; } 54697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 const char* name() const { return mName; } 55697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 private: 56697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 sp<NBLog::Reader> mReader; 57697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 static const size_t kMaxName = 32; 58697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 char mName[kMaxName]; 59697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 }; 60697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 Vector<NamedReader> mNamedReaders; 61697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明}; 62697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 63697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明} // namespace android 64697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明 65697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明#endif // ANDROID_MEDIA_LOG_SERVICE_H 66697af1fcc67388a7cb97c30e80f1fb77570d0077YOSHIFUJI Hideaki / 吉藤英明