#pragma once

// 插件服务器的插件对象接口定义

// 插件对象
typedef struct tagEIMPLGPluginInfo
{
	TCHAR			szPluginGuid[33];
	TCHAR			szPluginName[32];
	TCHAR			szPluginDesc[256];
	TCHAR			szPluginComp[32];
	TCHAR			szPluginUrl[64];
}EIMPLGPluginInfo, *LPEIMPLGPluginInfo;

typedef BOOL (*PLGPLUGININITIALIZE)(EIMPLGPluginInfo& stPLGPluginInfo);
typedef BOOL (*PLGPLUGINUNINITIALIZE)();
typedef BOOL (*PLGPLUGINNETMSG)(void* pSocketHandle, LPBYTE pMsgData, int nMsgDataLen);

#define PLGPluginInitialize_Func_Name			_T("PLGPluginInitialize")
#define PLGPluginUninitialize_Func_Name			_T("PLGPluginUninitialize")
#define PLGPluginNetMsg_Func_Name				_T("PLGPluginNetMsg")



struct IEIMPlgSvrBaseService
{
	virtual BOOL SendToClient(void* pSocketHandle, int nMsgType, LPBYTE pMsgData, int nMsgDataLen) = 0;
};


// API for plugins.
__declspec(dllexport) IEIMPlgSvrBaseService* EIMGetPlgSvrBaseService();