#pragma once
|
#include "Common.h"
|
#include <functional>
|
|
|
typedef std::function<void(void*)> ONRELEASECALLBACK;
|
class CContext : public IRxObject
|
{
|
public:
|
CContext();
|
virtual ~CContext();
|
|
public:
|
void setOnRelease(ONRELEASECALLBACK fOnRelease);
|
int addRef();
|
int release();
|
|
public:
|
virtual std::string& getClassName() = 0;
|
virtual std::string toString() = 0;
|
void setRetCode(int code);
|
int getRetCode();
|
void setRetMsg(const char* pszMsg);
|
std::string& getRetMsg();
|
HANDLE getEventHandle();
|
void setEvent();
|
void resetEvent();
|
static void createDir(CString strDir);
|
|
protected:
|
inline void Lock() { EnterCriticalSection(&m_criticalSection); }
|
inline void Unlock() { LeaveCriticalSection(&m_criticalSection); }
|
void ReadString(CArchive& ar, std::string& string);
|
void WriteString(CArchive& ar, std::string& string);
|
static BOOL IsBoxId(CString& strId);
|
static BOOL IsLotId(CString& strId);
|
|
private:
|
ONRELEASECALLBACK m_onReleaseCallback;
|
int m_nRef;
|
CRITICAL_SECTION m_criticalSection;
|
|
protected:
|
int m_nRetCode;
|
std::string m_strRetMsg;
|
HANDLE m_hEvent;
|
};
|