AHandler.h revision 72961230a5890071bcca436eb5630172ce84ec41
102fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff/*
2651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff * Copyright (C) 2010 The Android Open Source Project
302fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff *
402fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff * Licensed under the Apache License, Version 2.0 (the "License");
502fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff * you may not use this file except in compliance with the License.
602fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff * You may obtain a copy of the License at
702fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff *
802fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff *      http://www.apache.org/licenses/LICENSE-2.0
902fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff *
1002fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff * Unless required by applicable law or agreed to in writing, software
1102fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff * distributed under the License is distributed on an "AS IS" BASIS,
1202fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1302fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff * See the License for the specific language governing permissions and
1402fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff * limitations under the License.
1502fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff */
1602fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff
1702fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff#ifndef A_HANDLER_H_
1802fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff
1902fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff#define A_HANDLER_H_
2002fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff
2102fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff#include <media/stagefright/foundation/ALooper.h>
2202fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff#include <utils/RefBase.h>
23489a9d81fd1458940e1ec01ba0cef36843732479Irfan Sheriff
246f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriffnamespace android {
256f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriff
2602fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriffstruct AMessage;
27651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff
28651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriffstruct AHandler : public RefBase {
29651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    AHandler()
30651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff        : mID(0) {
31651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    }
32651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff
33651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    ALooper::handler_id id() const {
34651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff        return mID;
35651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    }
36651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff
37651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriffprotected:
38651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    virtual void onMessageReceived(const sp<AMessage> &msg) = 0;
3902fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff
406f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriffprivate:
41651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    friend struct ALooperRoster;
4202fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff
43674ca8a1f47c07033645a1016e68a2e82597e2faVinit Deshpande    ALooper::handler_id mID;
4402fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff
4502fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff    void setID(ALooper::handler_id id) {
466f7d385d964949e507dcc9c88012372f48d0bce7Irfan Sheriff        mID = id;
4702fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff    }
4802fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff
49651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff    DISALLOW_EVIL_CONSTRUCTORS(AHandler);
50651cdfcbac6245f570475991588ddc2d30265e8dIrfan Sheriff};
5102fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff
5202fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff}  // namespace android
5302fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff
5402fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff#endif  // A_HANDLER_H_
5502fb46a297c4f645f2a30b574151401dd0978521Irfan Sheriff