00001 #ifndef PV_INTERFACE_CMD_MESSAGE_H_INCLUDED 00002 #define PV_INTERFACE_CMD_MESSAGE_H_INCLUDED 00003 00004 #ifndef PV_COMMON_TYPES_H_INCLUDED 00005 #include "pv_common_types.h" 00006 #endif 00007 00008 #ifndef PV_ENGINE_TYPES_H_INCLUDED 00009 #include "pv_engine_types.h" 00010 #endif 00011 00022 class CPVCmnInterfaceCmdMessage 00023 { 00024 public: 00025 CPVCmnInterfaceCmdMessage(int aType, 00026 OsclAny* aContextData) : iId(0), 00027 iType(aType), 00028 iPriority(0), 00029 iContextData(aContextData) {}; 00030 00031 CPVCmnInterfaceCmdMessage() {}; 00032 00033 virtual ~CPVCmnInterfaceCmdMessage() {}; 00034 00035 PVCommandId GetCommandId() 00036 { 00037 return iId; 00038 } 00039 int GetType() 00040 { 00041 return iType; 00042 } 00043 OsclAny *GetContextData() 00044 { 00045 return iContextData; 00046 } 00047 00053 int compare(CPVCmnInterfaceCmdMessage* a, CPVCmnInterfaceCmdMessage* b) const 00054 { 00055 if (a->GetPriority() < b->GetPriority()) 00056 return 1; 00057 else //if no priority, use fifo order. 00058 return (a->GetCommandId() > b->GetCommandId()); 00059 } 00060 00061 int32 GetPriority()const 00062 { 00063 return iPriority; 00064 } 00065 00066 friend int32 operator<(const CPVCmnInterfaceCmdMessage& a, const CPVCmnInterfaceCmdMessage& b); 00067 00068 void SetId(PVCommandId aId) 00069 { 00070 iId = aId; 00071 } 00072 00073 protected: 00074 PVCommandId iId; 00075 int iType; 00076 int32 iPriority; 00077 OsclAny* iContextData; 00078 00079 friend class PVInterfaceProxy; 00080 }; 00081 00082 inline int32 operator<(const CPVCmnInterfaceCmdMessage& a, const CPVCmnInterfaceCmdMessage& b) 00083 { 00084 //Use priority 00085 if (a.iPriority < b.iPriority) 00086 { 00087 return true; 00088 } 00089 //If priority is the same, use id. 00090 else if (a.iPriority == b.iPriority) 00091 { 00092 //Smaller id means an older message so process older message first. 00093 return (a.iId > b.iId); 00094 } 00095 else 00096 { 00097 return false; 00098 } 00099 } 00100 #endif 00101 00102