AHandlerReflector.h revision 5994b4798b01f3dd340577c9ea9657f09093a770
1#ifndef A_HANDLER_REFLECTOR_H_
2
3#define A_HANDLER_REFLECTOR_H_
4
5#include <media/stagefright/foundation/AHandler.h>
6
7namespace android {
8
9template<class T>
10struct AHandlerReflector : public AHandler {
11    AHandlerReflector(T *target)
12        : mTarget(target) {
13    }
14
15protected:
16    virtual void onMessageReceived(const sp<AMessage> &msg) {
17        sp<T> target = mTarget.promote();
18        if (target != NULL) {
19            target->onMessageReceived(msg);
20        }
21    }
22
23private:
24    wp<T> mTarget;
25
26    AHandlerReflector(const AHandlerReflector<T> &);
27    AHandlerReflector<T> &operator=(const AHandlerReflector<T> &);
28};
29
30}  // namespace android
31
32#endif  // A_HANDLER_REFLECTOR_H_
33