⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 awflow.h

📁 一个多线程
💻 H
字号:
#ifndef __Asyn__Work__Flow__h__
#define __Asyn__Work__Flow__h__
#include "baseflow.h"

#define EVT_RECEIVE_DATA_BY_DLL			0x1000002b
#define EVENT_SET_CLOSE_FLOW_EVENT		0x1000002c
#define EVT_WORKERFLOW_RELEASE			0x1000000e

#define EVT_GETOBJ_REMOTE				0x19741218
#define EVT_GETOBJ_OVER					0x19751218

#define APIBUSSendCommandEx				0x00f10007 //dword dwSenderObject,dword dwCommand,ROAD int irode=0xffffffff,HKEY int hkey=0,TIMER int itime=0xffffffff,...
#define APIBUSSendEventEx				0x00f10008 //dword dwSenderObject,dword dwCommand,WAITOBJ dword wobj=0,WAITCMD dword wcmd=0,WAITTYPE dword wtype=0,ROAD int irode=0xffffffff,HKEY int hkey=0,...
#define APIBUSSendRespEx				0x00f10009 //dword dwSenderObject,dword dwCommand,WAITOBJ dword wobj=0,WAITCMD dword wcmd=0,WAITTYPE dword wtype=0,ROAD int irode=0xffffffff,...
#define APIBUSSetTimeOut				0x00f1000a //int iSec
#define APIBUSCancelTimeOut				0x00f1000b //int iSec

#define APIBUSLockOwn					0x00f10017 //int & buss,int ASYN asyn=1
#define APIBUSGetCurrentCommandParam	0x00f10004 //int idx,datablock 0 & param

#define APIBUSGetCommandParamNum		0x00f10005 //int & num
#define APIBUSGetCommand				0x00f10006 //dword & CommandHandle, dword & ApplyObject,dword & CommandType, WAIT int wait=0
#define APIBUSAddTimeOutMessage			0x00f1000f //int timeout,int timeid,dword object,dword command
#define APIBUSCancelTimeOutMessage		0x00f10010 //int timeid
#define APIBUSFlowSleep					0x00f10011 //int iSec

#define APIBUSUnLockOwn					0x00f1001e //
#define APIBUSFlowEdau					0x00f10020 //ALIS string szAlis='dacs',string szFunction,int & iRetCode,...
#define APIBUSAsynDllCall				0x00f10021 //dword lhandle,dword thandle,string name,CALLRET int cret,FUNCRET int fret...

#define APIBUSCreateNewFlow				0x00f20000 //int id,string flown,...
#define APIBUSGetCommandSendModal		0x00f20001 //int & mod
#define APIBUSReleaseFlow				0x00f20002 //int id

#define APIBUSGetAllCommandParam		0x00f20003 //...

#define APIBUSSetFlowEvent				0x00f20004 //int obj,MOD int modid=0,FLAG int flag=0,int iEventId, datablock 0 v1,datablock 0 v2
#define APIBUSExcuteOver				0x00f20005 //int obj,MOD int modid=0,...
#define APIBUSStartTransAction			0x00f20006 //
#define APIBUSEndTransAction			0x00f20007 //
#define APIBUSStartAtomAction			0x00f20008 //
#define APIBUSEndAtomAction				0x00f20009 //

#define APIBUSApplyExprFunctin			0x00f2000a //int obj,MOD int modid=0,int startcmd,int endcmd
#define APIBUSOpenDistrabutor			0x00f2000b //int & obj,string szAlis,int GroupNum,string szFeatureList,int timeout,int length
#define APIBUSGetDistrabutor			0x00f2000c //int & obj,string szAlis
#define APIBUSCloseDistrabutor			0x00f2000d //int obj
#define APIBUSAddRes					0x00f2000e //int obj,int dwGroupId,SKIL string szSkillFeature='',int dwResKey,BRDOBJ int dwCatchObj=0,BRDMOD int dwCatchMod=0
#define APIBUSFreeRes					0x00f2000f //int obj,int dwResKey
#define APIBUSLockRes					0x00f20010 //int obj,int dwResKey
#define APIBUSApplyResbySkill			0x00f20011 //int obj,int dwNeedKey1,int dwNeedKey2,int dwType,string szFeature,RGT int dwRight=0
#define APIBUSApplyResbyGroup			0x00f20012 //int obj,int dwNeedKey1,int dwNeedKey2,int dwType,int igroupid,RGT int dwRight=0

#define APIBUSEnableGetIn				0x00f2001a //FLAG int iflag=0,HANDLE dword dwNotifyhandle=0,string szIdentString,int port,int & iactid
#define APIBUSStartConnect				0x00f2001b //FLAG int iflag=0,HANDLE dword dwNotifyhandle=0,string szIdentString,int port,int & iactid
#define APIBUSDisconnected				0x00f2001c //FLAG int iflag=0,HANDLE dword dwNotifyhandle=0,dword connecthandle
#define APIBUSDisableGetIn				0x00f2001d //FLAG int iflag=0,HANDLE dword dwNotifyhandle=0,int acdid
#define APIBUSWriteData					0x00f2001f //FLAG int iflag=0,dword connecthandle,int acdid,datablock 0 dt,int iLen
#define APIBUSChangModName				0x00f20020 //FLAG int iflag=0,dword connecthandle,int modid,string Name
#define APIBUSGetLinkBuffer				0x00f20021 //dword & bhandle,dword connecthandle
#define APIBUSCheckBusLink				0x00f20022 
#define APIBUSCheckClientModId			0x00f20023 //dword & modid
#define APIBUSWriteRemoteData			0x00f20024 //datablock 0 dt,int len
#define APIBUSGetPDUData				0x00f20025 //dword bufferid,int & modid,datablock 0 & remotedata,int & len
#define APIBUSGetModIdByName			0x00f20026 //string strName,dword & stationid
#define APIBUSGetRegistedWorker			0x00f20027 //int & worker,int registerid
#define APIBUSSetReportOver				0x00f20028 //dword dwConnectHandle

#define APIBUSOpenArray					0x00f20029 //int & arrayhandle
#define APIBUSCloseArray				0x00f2002a //int arrayhandle
#define APIBUSCopyArray					0x00f2002b //int arrayhandle1,int arrayhandle2
#define APIBUSGetArrayMenber			0x00f2002c //ARRAY int arrayhandle=0xffffffff,LINE int ilne=0,COL int icol=0,datablock 0 & uv
#define APIBUSSetArrayMenber			0x00f2002d //ARRAY int arrayhandle=0xffffffff,LINE int ilne=0,COL int icol=0,datablock 0 uv
#define APIBUSGetArrayLine				0x00f2002e //ARRAY int arrayhandle=0xffffffff,LINE int ilne=0,...
#define APIBUSSetArrayLine				0x00f2002f //ARRAY int arrayhandle=0xffffffff,LINE int ilne=0,...
#define APIBUSGetArrayParam				0x00f20030 //ARRAY int arrayhandle=0xffffffff,LINE int & ilne=0,COL int & col=0,RET int & ret=0

#define APIBUSOpenOdbc					0x00f20031 //int & odbchandle,string szAlis,string szConnect,string szUser,string szPwd,PRDS string prds='select isoutparam,type,length from syscolumns where id in (select id from sysobjects where name=?)',TABS string tabs='select name,type,length from syscolumns where id in (select id from sysobjects where name=?)' 
#define APIBUSGetOdbc					0x00f20032 //int & odbchandle,string szAlis
#define APIBUSCloseOdbc					0x00f20033 //int odbchandle

#define APIBUSExcuteOdbc				0x00f20034 //ODBC int odbc=0xffffffff,string szExcuteSql,FLAG int flag=0,PRNUM int prnum=-1,...

#define APIBUSOpenTable					0x00f20035 //ODBC int odbc=0xffffffff,int & handle,string szTableName
#define APIBUSCloseTable				0x00f20036 //ODBC int odbc=0xffffffff,int handle
#define APIBUSMoveToLine				0x00f20037 //ODBC int odbc=0xffffffff,int handle,int iflag
#define APIBUSAddNewLine				0x00f20038 //ODBC int odbc=0xffffffff,int handle
#define APIBUSUpdateLine				0x00f20039 //ODBC int odbc=0xffffffff,int handle

class CAWFlow;

struct EXPROBJECT{
	DWORD dwModId;
	CAsynWorker * pFlow;
	DWORD dwFirstCmd,dwLastCmd;
};

class AFX_EXT_CLASS CAWFlow : public CBaseFlow 
{
private:
public:
	int m_nNumExprObj;
	int m_nMaxExprObj;
	EXPROBJECT * m_pExprObj;
	CAWFlow * m_pCreator;
	DWORD m_dwCreateMod;
	DWORD m_dwPauseCommand,m_dwFlowCreateId;
	CUniMsg *m_pCurMsg;
	int m_iFlowTimeOutSec;
	DWORD m_dwFlowCommadnIDent;
	HANDLE m_hMutex;
	BOOL m_bAutoDelete;
	CUniMsg m_DefaultResult;
	inline void EnableDeleteSelf(BOOL bCanDel){m_bAutoDelete=bCanDel;};
	int m_iFlowWaitObject,m_iFlowWaitCommand,m_iFlowWaitType,m_dwFlowWaitMach;
	CArray <CUniMsg *,CUniMsg *> m_CommandList,m_ResultList;
	BOOL m_bNeedCommand;
	BOOL m_bRelease;
	DWORD m_dwExcuteModId;
	CAsynWorker * m_pCmdExcutor;
	DWORD m_dwCommandExcute;
	void AddCommand(CUniMsg * pMsg,BOOL bRunDirect);
	CAWFlow(CAWFlow * pCreator=NULL,DWORD dwCreateMod=0);
	~CAWFlow();
	inline BOOL GetRight(DWORD dwSec=INFINITE){	return (WaitForSingleObject(m_hMutex,dwSec)==WAIT_OBJECT_0);};
	inline void ReleaseRight(){ReleaseMutex(m_hMutex);};
	virtual COMMANDRESULT DefaultParse(DWORD dwCommand,UniVar * pdwCommandList,int iNum) ;
	virtual BOOL GetVarValue(DWORD dwVarID,UniVar & tv);
	virtual BOOL SetVarValue(DWORD dwVarID,UniVar tv);
	virtual void OnRegisterBaseStyle();
	virtual void OnLockSuccess(HANDLE hkey,CAsynWorker * pWorker,DWORD dwID);
	virtual void OnTimer(int iNum,DWORD dwIdent);
	virtual void OnMsgCmd(CUniMsg *);
	virtual void OnMsgResp(CUniMsg * resp,CUniMsg * cmd);
	virtual void OnMsgEvent(CUniMsg *);
	BOOL AddExprObj(CAsynWorker * pFlow,DWORD dwFirstCmd,DWORD dwLastCmd,DWORD dwModId=0);
	void RemoveExprObj(CAsynWorker * pFlow,DWORD dwModId=0);
	BOOL GetExprObj(DWORD dwCmd,CAsynWorker * & pFlow,DWORD & dwModId);
	void AddCommand(BOOL bRunDirect,DWORD dwCommand,DWORD dwObject,DWORD dwType,DWORD dwIdent,DWORD sendMode,int Num,UniVar * pTV);
	void AddCommand(BOOL bRunDirect,DWORD dwCommand,DWORD dwObject,DWORD dwType,DWORD dwIdent,DWORD sendMode,UniVar tv=InValidVar,...);
	COMMANDRESULT SetPause(DWORD dwPauseCommand);
	COMMANDRESULT GetCommand(UniVar * pVar,int Allways=FALSE);
	void PreSetCmd(DWORD dwPauseCommand){m_dwPauseCommand=dwPauseCommand;};
	COMMANDRESULT SetContinue(){m_dwPauseCommand=0xffffffff;return LINE_CONTINUE;};
	int FunctionRet(BOOL bRunDirect,DWORD dwPauseCommand,UniVar *,int Num);
	int FunctionRet(BOOL bRunDirect,DWORD dwPauseCommand,UniVar uvi=InValidVar,...);
	virtual BOOL OnEndFlow(){OnRelease();return TRUE;};
	virtual void OnRelease();
	virtual void OnCreate();
	virtual CAWFlow * GetNewFlow(int flag);
	virtual BOOL OnPreStartFlow(){return TRUE;};
	virtual void EventCallOver(int exitCode,DWORD dwEventId,UniVar & p1,UniVar & p2){};
	virtual COMMANDRESULT ExcuteDirect(DWORD dwCommand,DWORD dwObj,DWORD dwModId,int iNum,UniVar * pVar);
	virtual void OnExcuteOver(int ierror,DWORD dwCommand,UniVar * pVar,int iNum);
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -