You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wheeldetect/3part/libzkq/include/spider.h

116 lines
3.4 KiB
C

/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:spider.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/04/23
History:23:4:2015 17:00
*******************************************************************************/
#ifndef __SPIDER_H_2015
#define __SPIDER_H_2015
#include "syswin/sysSpider.h"
#define _USE_SPIDER_DLL
// typedef struct tagSPIDER_INIT_PARAM{
// char* logPath;
// char* redisIp;
// int redisPort;
// }SPIDER_INIT_PARAM;
enum emSpiderType {
SPIDER_BASE,
SPIDER_REDIS,
SPIDER_FILE,
SPIDER_HTTP,
SPIDER_SQLITE,
SPIDER_VERSION_UPDATE,
SPIDER_DATA_UPLOAD,
};
/*
enum emSpiderSettingType {
SP_SETTING_TYPE_DATA = 0,
SP_SETTING_TYPE_FILE = 1
};
*/
typedef struct tagSPIDER_INI_SETTING {
//in parameters
emSpiderType spiderType;//@in
// char szIp[64];
// int nPort;
// char *szString;//log path or other strings, e.g."http://wwww.hzleaper.com"; file name, e.g "log.txt"
// char *szMainPath;
// char *szUserName;
// char *szPassword;
//json text
char* jsonText;//@in
//out parameters
bool bNewCreates;//@out
} SPIDER_INI_SETTING;
//json text keys
#define SPIDER_JSON_KEY_HTTP "http"
#define SPIDER_JSON_KEY_HTTP_USER "http_user"
#define SPIDER_JSON_KEY_HTTP_PASSWORD "http_pw"
#define SPIDER_JSON_KEY_MAIN_PATH "main_path"
#define SPIDER_JSON_KEY_REDIS_IP "redis_ip"
#define SPIDER_JSON_KEY_REDIS_PORT "redis_port"
#define SPIDER_JSON_KEY_REDIS_USER "redis_user"
#define SPIDER_JSON_KEY_REDIS_PASSWORD "redis_pw"
#define SPIDER_JSON_KEY_SQLITE_NAME "sqlite_db"
#define SPIDER_JSON_KEY_SQLITE_ROOT "sqlite_root"
#define SPIDER_JSON_KEY_SQLITE_PASSWORD "sqlite_pw"
#define SPIDER_JSON_KEY_FILE_NAME "file_name"
//
class ISpiderConnect
{
public:
ISpiderConnect() {}
virtual ~ISpiderConnect() {}
virtual emSpiderType SpiderType() = 0;
// virtual int RedisList(const char* command, const char* key, const char* values) = 0;
virtual bool QueueString(const char* key, const char* value) = 0;
virtual bool AppendCommand(void* func, char *szFormatCmd) = 0;
virtual bool QueuePicture(const char* name, const ZImage* pImage, const char* format = "PNG") = 0;
// virtual char* RedisFormatCommand(const char *format, ...) = 0;
// virtual void* AllocMem(int nSize) = 0;
// virtual void FreeMem(void* pMem) = 0;
virtual bool HttpGet(const char* szTextUrl, class IHttpCallback* pHttpCb) = 0;
enum emHttpType {
GET,
POST,
PUT,
};
virtual bool HttpPost(const char* szTextUrl, class IHttpCallback* pHttpCb) { return false; }
};
//typedef ISpiderConnect ISpider;
#define ISpider ISpiderConnect
class IHttpCallback
{
public:
IHttpCallback() {}
virtual ~IHttpCallback() {}
virtual void OnTotalSize(INT64 nSize) = 0;//
virtual void OnReadReady(ZReply* pDevice) = 0;
virtual void OnFinished() = 0;
virtual void OnError(int nError) = 0;
enum emInputType {
INPUT_TYPE_NO,
INPUT_TYPE_RAWDATA,
INPUT_TYPE_QBYTEARRAY,
INPUT_TYPE_ZIODEVICE,
INPUT_TYPE_QHTTPMULTIPART,
};
virtual emInputType GetInputType() {
return INPUT_TYPE_NO;
}
virtual void* GetInputData(INT64& nSize) {
return NULL;
}
};
#endif