This commit is contained in:
yangjiaxuan 2023-05-16 18:31:49 +08:00
commit 23979437ef
13 changed files with 176 additions and 155 deletions

View File

@ -2,9 +2,11 @@ LIBRARY
EXPORTS EXPORTS
HGLib_MemoryCopy
HGLib_LoadImage HGLib_LoadImage
HGLib_GetImageData HGLib_GetImageData
HGLib_GetImageInfo HGLib_GetImageInfo
HGLib_GetImageDpi
HGLib_SaveImage HGLib_SaveImage
HGLib_ReleaseImage HGLib_ReleaseImage
HGLib_InitDevice HGLib_InitDevice

View File

@ -18,6 +18,17 @@ struct HGLibSaveImageParam_V1
}; };
#pragma pack(pop) #pragma pack(pop)
HGBool HGAPI HGLib_MemoryCopy(HGVoid *dest, const HGVoid *src, HGUInt size)
{
if (NULL == dest || NULL == src || 0 == size)
{
return HGFALSE;
}
memcpy(dest, src, size);
return HGTRUE;
}
HGLibImage HGAPI HGLib_LoadImage(const HGChar* filePath) HGLibImage HGAPI HGLib_LoadImage(const HGChar* filePath)
{ {
if (NULL == filePath) if (NULL == filePath)
@ -63,6 +74,17 @@ HGBool HGAPI HGLib_GetImageInfo(HGLibImage image, HGLibImageInfo* imageInfo)
return HGTRUE; return HGTRUE;
} }
HGBool HGAPI HGLib_GetImageDpi(HGLibImage image, HGUInt *xDpi, HGUInt *yDpi)
{
if (NULL == image || NULL == xDpi || NULL == yDpi)
{
return HGFALSE;
}
HGBase_GetImageDpi((HGImage)image, xDpi, yDpi);
return HGTRUE;
}
HGBool HGAPI HGLib_SaveImage(HGLibImage image, const HGChar* savePath, const HGLibSaveImageParam* saveParam) HGBool HGAPI HGLib_SaveImage(HGLibImage image, const HGChar* savePath, const HGLibSaveImageParam* saveParam)
{ {
if (NULL == image || NULL == savePath) if (NULL == image || NULL == savePath)

View File

@ -509,6 +509,9 @@ typedef void (HGAPI *HGLibDeviceScanEventFunc)(HGLibDevice device, HGUInt event,
*/ */
typedef void (HGAPI *HGLibDeviceScanImageFunc)(HGLibDevice device, HGLibImage image, HGPointer param); typedef void (HGAPI *HGLibDeviceScanImageFunc)(HGLibDevice device, HGLibImage image, HGPointer param);
/* 内存拷贝 */
HGEXPORT HGBool HGAPI HGLib_MemoryCopy(HGVoid *dest, const HGVoid *src, HGUInt size);
/* 加载图像 */ /* 加载图像 */
HGEXPORT HGLibImage HGAPI HGLib_LoadImage(const HGChar *filePath); HGEXPORT HGLibImage HGAPI HGLib_LoadImage(const HGChar *filePath);
@ -518,6 +521,9 @@ HGEXPORT HGByte* HGAPI HGLib_GetImageData(HGLibImage image);
/* 获取图像信息 */ /* 获取图像信息 */
HGEXPORT HGBool HGAPI HGLib_GetImageInfo(HGLibImage image, HGLibImageInfo* imageInfo); HGEXPORT HGBool HGAPI HGLib_GetImageInfo(HGLibImage image, HGLibImageInfo* imageInfo);
/* 获取图像DPI */
HGEXPORT HGBool HGAPI HGLib_GetImageDpi(HGLibImage image, HGUInt *xDpi, HGUInt *yDpi);
/* 保存图像 */ /* 保存图像 */
HGEXPORT HGBool HGAPI HGLib_SaveImage(HGLibImage image, const HGChar* savePath, const HGLibSaveImageParam* saveParam); HGEXPORT HGBool HGAPI HGLib_SaveImage(HGLibImage image, const HGChar* savePath, const HGLibSaveImageParam* saveParam);

View File

@ -17,6 +17,7 @@ extern "C"
#include <curl/curl.h> #include <curl/curl.h>
#include <list> #include <list>
#include <algorithm> #include <algorithm>
#include "SockIoUser.h"
namespace ver_1 namespace ver_1
{ {
@ -154,10 +155,7 @@ namespace ver_1
HGBase_CreateLock(&m_lock); HGBase_CreateLock(&m_lock);
m_devName.clear(); m_devName.clear();
m_devHandle = NULL; m_devHandle = NULL;
m_saneEvent = NULL; m_user.clear();
m_saneParam = NULL;
m_saneImageCallback = NULL;
m_saneImageParam = NULL;
m_scanInsertImgName.clear(); m_scanInsertImgName.clear();
m_scanIsInsert = false; m_scanIsInsert = false;
@ -236,39 +234,27 @@ namespace ver_1
StopScan(); StopScan();
} }
void ManagerV1::SetSaneEvent(SaneEvent event, void* param) void ManagerV1::AddUser(class SockIoUser *user)
{ {
assert(NULL != event && NULL != param); assert(NULL != user);
HGBase_EnterLock(m_lock); HGBase_EnterLock(m_lock);
m_saneEvent = event; m_user.push_back(user);
m_saneParam = param;
HGBase_LeaveLock(m_lock); HGBase_LeaveLock(m_lock);
} }
void ManagerV1::SetSaneImageCallback(SaneImageCallback func, void* param) void ManagerV1::RemoveUser(class SockIoUser *user)
{ {
assert(NULL != func && NULL != param); assert(NULL != user);
HGBase_EnterLock(m_lock); HGBase_EnterLock(m_lock);
m_saneImageCallback = func; std::list<class SockIoUser *>::iterator iter;
m_saneImageParam = param; for (iter = m_user.begin(); iter != m_user.end(); ++iter)
HGBase_LeaveLock(m_lock); {
if (*iter == user)
{
m_user.erase(iter);
break;
} }
void ManagerV1::ResetSaneEvent()
{
HGBase_EnterLock(m_lock);
m_saneEvent = NULL;
m_saneParam = NULL;
HGBase_LeaveLock(m_lock);
} }
void ManagerV1::ResetSaneImageCallback()
{
HGBase_EnterLock(m_lock);
m_saneImageCallback = NULL;
m_saneImageParam = NULL;
HGBase_LeaveLock(m_lock); HGBase_LeaveLock(m_lock);
} }
@ -1756,8 +1742,11 @@ namespace ver_1
} }
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneEvent) std::list<class SockIoUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_ARRIVE, sane_dev->name, false, p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
SockIoUser::SaneEvent(SANEEVENT_ARRIVE, sane_dev->name, false, *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -1779,8 +1768,11 @@ namespace ver_1
} }
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneEvent) std::list<class SockIoUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_REMOVE, sane_dev->name, false, p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
SockIoUser::SaneEvent(SANEEVENT_REMOVE, sane_dev->name, false, *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -1789,8 +1781,11 @@ namespace ver_1
HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_STATUS, msg=%s", Utf8ToStdString((char*)data).c_str()); HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_STATUS, msg=%s", Utf8ToStdString((char*)data).c_str());
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneEvent) std::list<class SockIoUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_STATUS, (const char*)data, false, p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
SockIoUser::SaneEvent(SANEEVENT_STATUS, (const char*)data, false, *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -1799,8 +1794,11 @@ namespace ver_1
HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_ERROR, msg=%s", Utf8ToStdString((char*)data).c_str()); HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_ERROR, msg=%s", Utf8ToStdString((char*)data).c_str());
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneEvent) std::list<class SockIoUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_ERROR, (const char*)data, (0 != *len), p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
SockIoUser::SaneEvent(SANEEVENT_ERROR, (const char*)data, (0 != *len), *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -1809,8 +1807,11 @@ namespace ver_1
HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_WORKING, msg=%s", Utf8ToStdString((char*)data).c_str()); HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_WORKING, msg=%s", Utf8ToStdString((char*)data).c_str());
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneEvent) std::list<class SockIoUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_WORKING, (const char*)data, false, p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
SockIoUser::SaneEvent(SANEEVENT_WORKING, (const char*)data, false, *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -1896,8 +1897,11 @@ namespace ver_1
imgBase64 += GetBase64(img); imgBase64 += GetBase64(img);
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneImageCallback) std::list<class SockIoUser *>::iterator iter;
p->m_saneImageCallback(imgName.c_str(), imgBase64.c_str(), p->m_saneImageParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
SockIoUser::SaneImageCallback(imgName.c_str(), imgBase64.c_str(), *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
HGBase_DestroyImage(img); HGBase_DestroyImage(img);
@ -1922,8 +1926,11 @@ namespace ver_1
} }
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneEvent) std::list<class SockIoUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_FINISH, (const char*)data, (0 != *len), p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
SockIoUser::SaneEvent(SANEEVENT_FINISH, (const char*)data, (0 != *len), *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;

View File

@ -11,6 +11,7 @@
#include "Manager.h" #include "Manager.h"
#include "Msg.h" #include "Msg.h"
#include <string> #include <string>
#include <list>
#include <vector> #include <vector>
namespace ver_1 namespace ver_1
@ -87,9 +88,6 @@ namespace ver_1
int format; // 上传格式 0: ofd 1: pdf 2: zip, 默认2 int format; // 上传格式 0: ofd 1: pdf 2: zip, 默认2
}; };
typedef void (*SaneEvent)(int code, const char* str, bool err, void* param);
typedef void (*SaneImageCallback)(const char* name, const char *base64, void* param);
class ManagerV1 : public Manager class ManagerV1 : public Manager
{ {
public: public:
@ -103,12 +101,8 @@ namespace ver_1
// 扫描完成 // 扫描完成
void ScanFinish(const ScanFinishParam* param); void ScanFinish(const ScanFinishParam* param);
// 设置回调 void AddUser(class SockIoUser *user);
void SetSaneEvent(SaneEvent event, void* param); void RemoveUser(class SockIoUser *user);
void SetSaneImageCallback(SaneImageCallback func, void* param);
// 清理回调
void ResetSaneEvent();
void ResetSaneImageCallback();
// 扫描 // 扫描
bool Scan(const std::string& insertImgName, bool isInsert); bool Scan(const std::string& insertImgName, bool isInsert);
@ -189,10 +183,7 @@ namespace ver_1
std::string m_devName; std::string m_devName;
SANE_Handle m_devHandle; SANE_Handle m_devHandle;
DevParam m_devParam; DevParam m_devParam;
SaneEvent m_saneEvent; std::list<class SockIoUser *> m_user;
void* m_saneParam;
SaneImageCallback m_saneImageCallback;
void* m_saneImageParam;
std::string m_scanInsertImgName; std::string m_scanInsertImgName;
bool m_scanIsInsert; bool m_scanIsInsert;

View File

@ -22,6 +22,7 @@ extern "C"
#include <curl/curl.h> #include <curl/curl.h>
#include <list> #include <list>
#include <algorithm> #include <algorithm>
#include "WSUser.h"
namespace ver_2 namespace ver_2
{ {
@ -50,10 +51,7 @@ namespace ver_2
HGBase_StandardiseFileName(m_globalCfg.fileSavePath.c_str(), stdSavePath, 256); HGBase_StandardiseFileName(m_globalCfg.fileSavePath.c_str(), stdSavePath, 256);
m_globalCfg.fileSavePath = stdSavePath; m_globalCfg.fileSavePath = stdSavePath;
m_saneEvent = NULL; m_user.clear();
m_saneParam = NULL;
m_saneImageCallback = NULL;
m_saneImageParam = NULL;
m_initDevice = false; m_initDevice = false;
m_devNameList.clear(); m_devNameList.clear();
@ -207,39 +205,27 @@ namespace ver_2
} }
} }
void ManagerV2::SetSaneEvent(SaneEvent event, void* param) void ManagerV2::AddUser(class WSUser *user)
{ {
assert(NULL != event && NULL != param); assert(NULL != user);
HGBase_EnterLock(m_lock); HGBase_EnterLock(m_lock);
m_saneEvent = event; m_user.push_back(user);
m_saneParam = param;
HGBase_LeaveLock(m_lock); HGBase_LeaveLock(m_lock);
} }
void ManagerV2::SetSaneImageCallback(SaneImageCallback func, void* param) void ManagerV2::RemoveUser(class WSUser *user)
{ {
assert(NULL != func && NULL != param); assert(NULL != user);
HGBase_EnterLock(m_lock); HGBase_EnterLock(m_lock);
m_saneImageCallback = func; std::list<class WSUser *>::iterator iter;
m_saneImageParam = param; for (iter = m_user.begin(); iter != m_user.end(); ++iter)
HGBase_LeaveLock(m_lock); {
if (*iter == user)
{
m_user.erase(iter);
break;
} }
void ManagerV2::ResetSaneEvent()
{
HGBase_EnterLock(m_lock);
m_saneEvent = NULL;
m_saneParam = NULL;
HGBase_LeaveLock(m_lock);
} }
void ManagerV2::ResetSaneImageCallback()
{
HGBase_EnterLock(m_lock);
m_saneImageCallback = NULL;
m_saneImageParam = NULL;
HGBase_LeaveLock(m_lock); HGBase_LeaveLock(m_lock);
} }
@ -4044,8 +4030,11 @@ namespace ver_2
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
p->m_devNameList.push_back(sane_dev->name); p->m_devNameList.push_back(sane_dev->name);
if (NULL != p->m_saneEvent) std::list<class WSUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_ARRIVE, sane_dev->name, false, p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_ARRIVE, sane_dev->name, false, *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -4075,8 +4064,11 @@ namespace ver_2
break; break;
} }
} }
if (NULL != p->m_saneEvent) std::list<class WSUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_REMOVE, sane_dev->name, false, p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_REMOVE, sane_dev->name, false, *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -4085,8 +4077,11 @@ namespace ver_2
HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_WORKING, msg=%s", Utf8ToStdString((char*)data).c_str()); HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_WORKING, msg=%s", Utf8ToStdString((char*)data).c_str());
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneEvent) std::list<class WSUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_WORKING, (const char*)data, false, p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_WORKING, (const char*)data, false, *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -4108,8 +4103,11 @@ namespace ver_2
} }
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneEvent) std::list<class WSUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_FINISH, (const char*)data, (0 != *len), p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_FINISH, (const char*)data, (0 != *len), *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -4118,8 +4116,11 @@ namespace ver_2
HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_STATUS, msg=%s", Utf8ToStdString((char*)data).c_str()); HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_STATUS, msg=%s", Utf8ToStdString((char*)data).c_str());
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneEvent) std::list<class WSUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_STATUS, (const char*)data, false, p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_STATUS, (const char*)data, false, *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -4128,8 +4129,11 @@ namespace ver_2
HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_ERROR, msg=%s", Utf8ToStdString((char*)data).c_str()); HGBase_WriteInfo(HGBASE_INFOTYPE_DESC, "SANE_EVENT_ERROR, msg=%s", Utf8ToStdString((char*)data).c_str());
HGBase_EnterLock(p->m_lock); HGBase_EnterLock(p->m_lock);
if (NULL != p->m_saneEvent) std::list<class WSUser *>::iterator iter;
p->m_saneEvent(SANEEVENT_ERROR, (const char*)data, (0 != *len), p->m_saneParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneEvent(SANEEVENT_ERROR, (const char*)data, (0 != *len), *iter);
}
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);
} }
break; break;
@ -4182,8 +4186,11 @@ namespace ver_2
} }
} }
if (NULL != p->m_saneImageCallback) std::list<class WSUser *>::iterator iter;
p->m_saneImageCallback(imagePath.c_str(), blank ? true : false, p->m_saneImageParam); for (iter = p->m_user.begin(); iter != p->m_user.end(); ++iter)
{
WSUser::SaneImageCallback(imagePath.c_str(), blank ? true : false, *iter);
}
} }
HGBase_LeaveLock(p->m_lock); HGBase_LeaveLock(p->m_lock);

View File

@ -111,9 +111,6 @@ namespace ver_2
std::string thumbBase64; std::string thumbBase64;
}; };
typedef void (*SaneEvent)(int code, const char *str, bool err, void* param);
typedef void (*SaneImageCallback)(const char* path, bool blank, void* param);
class ManagerV2 : public Manager class ManagerV2 : public Manager
{ {
public: public:
@ -129,12 +126,8 @@ namespace ver_2
// 删除文件 // 删除文件
void RemoveSavedFile(const RemoveSavedFileParam* param); void RemoveSavedFile(const RemoveSavedFileParam* param);
// 设置回调 void AddUser(class WSUser *user);
void SetSaneEvent(SaneEvent event, void* param); void RemoveUser(class WSUser *user);
void SetSaneImageCallback(SaneImageCallback func, void* param);
// 清理回调
void ResetSaneEvent();
void ResetSaneImageCallback();
// 设置全局配置 // 设置全局配置
int SetGlobalConfig(const GlobalConfig& cfg, HGUInt mask, std::string &errInfo); int SetGlobalConfig(const GlobalConfig& cfg, HGUInt mask, std::string &errInfo);
@ -304,10 +297,7 @@ namespace ver_2
private: private:
HGLock m_lock; HGLock m_lock;
GlobalConfig m_globalCfg; GlobalConfig m_globalCfg;
SaneEvent m_saneEvent; std::list<class WSUser *> m_user;
void* m_saneParam;
SaneImageCallback m_saneImageCallback;
void* m_saneImageParam;
bool m_initDevice; bool m_initDevice;
std::vector<std::string> m_devNameList; std::vector<std::string> m_devNameList;

View File

@ -16,14 +16,12 @@ namespace ver_1
#endif #endif
: WebUser(server, id, ip, port, sockConn) : WebUser(server, id, ip, port, sockConn)
{ {
GetManager()->SetSaneEvent(SaneEvent2, this); GetManager()->AddUser(this);
GetManager()->SetSaneImageCallback(SaneImageCallback2, this);
} }
SockIoUser::~SockIoUser() SockIoUser::~SockIoUser()
{ {
GetManager()->ResetSaneImageCallback(); GetManager()->RemoveUser(this);
GetManager()->ResetSaneEvent();
} }
ManagerV1* SockIoUser::GetManager() ManagerV1* SockIoUser::GetManager()
@ -427,7 +425,7 @@ namespace ver_1
} }
} }
void SockIoUser::SaneEvent2(int code, const char* str, bool err, void* param) void SockIoUser::SaneEvent(int code, const char* str, bool err, void* param)
{ {
SockIoUser* p = (SockIoUser*)param; SockIoUser* p = (SockIoUser*)param;
@ -464,7 +462,7 @@ namespace ver_1
} }
} }
void SockIoUser::SaneImageCallback2(const char* name, const char* base64, void* param) void SockIoUser::SaneImageCallback(const char* name, const char* base64, void* param)
{ {
SockIoUser* p = (SockIoUser*)param; SockIoUser* p = (SockIoUser*)param;

View File

@ -24,9 +24,10 @@ namespace ver_1
void PostEventMsg(const HGByte* data, HGUInt dataSize); void PostEventMsg(const HGByte* data, HGUInt dataSize);
virtual void ThreadFunc(); virtual void ThreadFunc();
public:
static void SaneEvent(int code, const char* str, bool err, void* param);
static void SaneImageCallback(const char* name, const char *base64, void* param);
private: private:
static void SaneEvent2(int code, const char* str, bool err, void* param);
static void SaneImageCallback2(const char* name, const char *base64, void* param);
static void GetMsgInfo(const SockIoCmdParam* param, std::string& user, std::string& data); static void GetMsgInfo(const SockIoCmdParam* param, std::string& user, std::string& data);
bool ShakeHand(const std::string& head); bool ShakeHand(const std::string& head);
void Pong(); void Pong();

View File

@ -202,16 +202,12 @@ namespace ver_2
m_startScanIsLocalSave = true; m_startScanIsLocalSave = true;
m_startScanIsGetBase64 = false; m_startScanIsGetBase64 = false;
GetManager()->SetSaneEvent(SaneEvent2, this); GetManager()->AddUser(this);
GetManager()->SetSaneImageCallback(SaneImageCallback2, this);
} }
WSUser::~WSUser() WSUser::~WSUser()
{ {
std::string errInfo; GetManager()->RemoveUser(this);
GetManager()->DeinitDevice(errInfo);
GetManager()->ResetSaneImageCallback();
GetManager()->ResetSaneEvent();
} }
ManagerV2* WSUser::GetManager() ManagerV2* WSUser::GetManager()
@ -769,7 +765,7 @@ namespace ver_2
} }
} }
void WSUser::SaneEvent2(int code, const char* str, bool err, void* param) void WSUser::SaneEvent(int code, const char* str, bool err, void* param)
{ {
WSUser* p = (WSUser*)param; WSUser* p = (WSUser*)param;
@ -897,7 +893,7 @@ namespace ver_2
} }
} }
void WSUser::SaneImageCallback2(const char* path, bool blank, void* param) void WSUser::SaneImageCallback(const char* path, bool blank, void* param)
{ {
WSUser* p = (WSUser*)param; WSUser* p = (WSUser*)param;

View File

@ -25,9 +25,10 @@ namespace ver_2
void PostEventMsg(const HGByte* data, HGUInt dataSize); void PostEventMsg(const HGByte* data, HGUInt dataSize);
virtual void ThreadFunc(); virtual void ThreadFunc();
public:
static void SaneEvent(int code, const char* str, bool err, void* param);
static void SaneImageCallback(const char* path, bool blank, void* param);
private: private:
static void SaneEvent2(int code, const char* str, bool err, void* param);
static void SaneImageCallback2(const char* path, bool blank, void* param);
bool ShakeHand(const std::string& head); bool ShakeHand(const std::string& head);
void Pong(); void Pong();
bool SendResponse(const HGByte* data, HGUInt size, HGBool text); bool SendResponse(const HGByte* data, HGUInt size, HGBool text);