﻿#ifndef _OTXPROXY_H_
#define _OTXPROXY_H_
#include "otx/OTXBase.hpp"



#ifdef __cplusplus
extern "C" {
#endif

	//从jsonString中获取key的值
	OTX_API int jsonValue(char* jsonString, char* key, char* outBuffer, unsigned int outBufferSize);
	//从jsonString中获取key的值
	OTX_API int jsonNum(char* jsonString, char* key, char* outBuffer, unsigned int outBufferSize);

	//向json串中添加key-value
	OTX_API int addJsonKey(char* rawString, char* key, char* value, char* outBuffer, unsigned int outBufferSize);
	//向json串中添加key-num
	OTX_API int addJsonNum(char* rawString, char* key, long value, char* outBuffer, unsigned int outBufferSize);

	//返回JSON的类型(-1，解析出错; 1,bool型; 2,空；3,数值； 4，字符串； 5，Json数组； 6，Json对象)
	OTX_API int jsonType(char* jsonString);
	//返回数组个数
	OTX_API int jsonArraySize(char* jsonString);
	//返回下标=index的数组元素
	OTX_API int jsonArrayValue(char* jsonString, int index, char* outBuffer, unsigned int outBufferSize);

	/***************************************************************
	* 函数: 判定str1是否完整包含str2的字符串
	* 参数: 以‘\0’结尾的两个字符串
	* 返回: -1，str1中不包含str2;  返回str1中首次出现str2的字符位置
	/***************************************************************/
	OTX_API int strContains(char* str1, char* str2);
	/***************************************************************
	* 函数: 判定str是否完仅包含阿拉伯数字
	* 参数: 以‘\0’结尾的两个字符串
	* 返回: bool
	/***************************************************************/
	OTX_API int isArabDigital(const char* str);
	/***************************************************************
	* 函数: 判定str是否仅包含阿拉伯数字和ASCII字母
	* 参数: 以‘\0’结尾的两个字符串
	* 返回: bool
	/***************************************************************/
	OTX_API int isAlphanumeric(const char* str);
	/***************************************************************
	* 函数: 判定str是否仅包含阿拉伯数字、负号和小数点
	* 参数: 以‘\0’结尾的两个字符串
	* 返回: bool
	/***************************************************************/
	OTX_API int isNumericWithSignAndDot(const char* str);

	//获取系统时间(单位：毫妙)
	OTX_API int get_currentTimeString(char* outBuffer, unsigned int outBufferSize, bool ms = true);
	OTX_API int get_currentTimeStampString(char* outBuffer, unsigned int outBufferSize, bool ms = true);
	OTX_API uint64_t get_currentTimeStamp();
	OTX_API bool convert_secondsToString(uint32_t sec, char* hourBuffer, int hourSize, char* minuteBuffer, int minSize, char* secondBuffer, int secSize);
	OTX_API int32_t get_currentTimeZone();
	OTX_API void delay(uint32_t ms);

	/***************************************************************
	* 函数: 打印debug信息(UTF8转GBK打印)
	* 参数: tag 模块Id
	* 参数：msg 打印消息
	/***************************************************************/
	OTX_API void logger(char* tag, char* msg);
	OTX_API void logger_num(char* tag, int number);
	OTX_API void logger_hex(char* tag, unsigned char* u8Buffer, int len);
	/***************************************************************
	* 函数: 设置日志等级
	* 参数:	0,off 1,logger 2,error 3,warn 4,info 5,debug
	/***************************************************************/
	OTX_API void setLoggerLevel(int level);
#ifdef __cplusplus
}
#endif


#endif // _OTXPROXY_H_



