AHandlerReflector.h revision 5994b4798b01f3dd340577c9ea9657f09093a770
15994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber#ifndef A_HANDLER_REFLECTOR_H_ 25994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber 35994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber#define A_HANDLER_REFLECTOR_H_ 45994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber 55994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber#include <media/stagefright/foundation/AHandler.h> 65994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber 75994b4798b01f3dd340577c9ea9657f09093a770Andreas Hubernamespace android { 85994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber 95994b4798b01f3dd340577c9ea9657f09093a770Andreas Hubertemplate<class T> 105994b4798b01f3dd340577c9ea9657f09093a770Andreas Huberstruct AHandlerReflector : public AHandler { 115994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber AHandlerReflector(T *target) 125994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber : mTarget(target) { 135994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber } 145994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber 155994b4798b01f3dd340577c9ea9657f09093a770Andreas Huberprotected: 165994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber virtual void onMessageReceived(const sp<AMessage> &msg) { 175994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber sp<T> target = mTarget.promote(); 185994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber if (target != NULL) { 195994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber target->onMessageReceived(msg); 205994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber } 215994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber } 225994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber 235994b4798b01f3dd340577c9ea9657f09093a770Andreas Huberprivate: 245994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber wp<T> mTarget; 255994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber 265994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber AHandlerReflector(const AHandlerReflector<T> &); 275994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber AHandlerReflector<T> &operator=(const AHandlerReflector<T> &); 285994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber}; 295994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber 305994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber} // namespace android 315994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber 325994b4798b01f3dd340577c9ea9657f09093a770Andreas Huber#endif // A_HANDLER_REFLECTOR_H_ 33