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 / 吉藤英明