79 lines
2.0 KiB
C++
79 lines
2.0 KiB
C++
#pragma once
|
|
|
|
#include "base/HGDef.h"
|
|
#include "base/HGInc.h"
|
|
#include "base/HGLock.h"
|
|
#include "base/HGEvent.h"
|
|
#include "base/HGThread.h"
|
|
#include "base/HGImage.h"
|
|
#include "base/HGMsgPump.h"
|
|
#include "Msg.h"
|
|
#include "cJSON.h"
|
|
#include "sane/sane_ex.h"
|
|
#include "sane/sane_option_definitions.h"
|
|
#include <string>
|
|
|
|
class WebServer;
|
|
|
|
class WebUser
|
|
{
|
|
public:
|
|
#if defined(HG_CMP_MSC)
|
|
WebUser(WebServer* server, HGUInt id, HGMsgPump msgPump, const std::string& ip, uint16_t port, SOCKET sockConn);
|
|
#else
|
|
WebUser(WebServer* server, HGUInt id, HGMsgPump msgPump, const std::string& ip, uint16_t port, int sockConn);
|
|
#endif
|
|
~WebUser();
|
|
|
|
HGUInt GetId();
|
|
void CloseDev(const CloseDevParam* param);
|
|
void ScanFinish(const ScanFinishParam* param);
|
|
void HandleCmd(const WSCmdParam* param);
|
|
void HandleEvent(const WSEvtParam* param);
|
|
|
|
private:
|
|
void GetDeviceList(cJSON *json);
|
|
void SelectDevice(cJSON* json);
|
|
void SetScanColorType(cJSON* json);
|
|
void SetDPI(cJSON* json);
|
|
void SetDuplex(cJSON* json);
|
|
void SetScanJPGQuality(cJSON* json);
|
|
void StartScan(cJSON* json);
|
|
|
|
private:
|
|
void PostDisConnectMsg();
|
|
void PostCmdMsg(const HGByte* data, HGUInt dataSize);
|
|
void PostEventMsg(const HGByte* data, HGUInt dataSize);
|
|
static void ThreadFunc(HGThread thread, HGPointer param);
|
|
static int sane_ex_callback(SANE_Handle hdev, int code, void* data, unsigned int* len, void* param);
|
|
std::string GetBase64(HGImage image);
|
|
HGBool SetParam(const char* optionName, const HGVoid* data);
|
|
HGInt GetDpi();
|
|
|
|
bool ShakeHand(const std::string& head);
|
|
void Pong();
|
|
bool SendResponse(const HGByte* data, HGUInt size, HGBool text);
|
|
|
|
private:
|
|
HGLock m_lock;
|
|
HGLock m_lockName;
|
|
WebServer* m_server;
|
|
HGUInt m_id;
|
|
HGMsgPump m_msgPump;
|
|
std::string m_ip;
|
|
uint16_t m_port;
|
|
#if defined(HG_CMP_MSC)
|
|
SOCKET m_sockConn;
|
|
#else
|
|
int m_sockConn;
|
|
#endif
|
|
HGThread m_thread;
|
|
|
|
int m_jpgQuality;
|
|
std::vector<std::string> m_devNameList;
|
|
std::string m_devName;
|
|
SANE_Handle m_devHandle;
|
|
int m_dpi;
|
|
HGEvent m_scanEvent;
|
|
};
|