#pragma once
#ifndef CMessage_h
#define CMessage_h
#include "FWOS.h"
#include "AMessage.h"
#include "AMessageSource.h"
namespace CoreFW
{
template< typename ClassType >
class CPoolObject ;
class CORE_DLL_DECLARATION_SPECIFIER CMessage : public AMessage
{
friend class CPoolObject<CMessage> ;
protected:
CMessage() ;
virtual ~CMessage() ;
public:
MESSAGE_ID_TYPE GetMessageID() const ;
void SetMessageID( MESSAGE_ID_TYPE MessageID ) ;
AMessageSource* GetMessageSource() const ;
void SetMessageSource( AMessageSource *pMessageSource ) ;
static CMessage* GetAvailable( MESSAGE_ID_TYPE MessageID, EnumMessageType eMessageType, AMessageHandler *pMessageTarget,
AMessageData *pMessageData = NULL, AMessageSource *pMessageSource = NULL ) ;
FW_RETURN_TYPE Execute() ;
void Release() ;
protected:
static CMessage* GetAvailable() ;
private:
void ReleaseParameters() ;
void ReleaseCMessageData() ;
private:
long m_MessageID ;
AMessageSource *m_pMessageSource ;
} ;
inline MESSAGE_ID_TYPE CMessage::GetMessageID() const
{
return m_MessageID ;
}
inline void CMessage::SetMessageID( MESSAGE_ID_TYPE MessageID )
{
m_MessageID = MessageID ;
}
inline AMessageSource* CMessage::GetMessageSource() const
{
return m_pMessageSource ;
}
inline void CMessage::SetMessageSource( AMessageSource *pMessageSource )
{
m_pMessageSource = pMessageSource ;
}
} // End namespace
#endif