IBaseDataMgr.h

source: wtcpp/folder98/folder01/folder3/folder1/file01.md

/*!
 * \file IBaseDataMgr.h
 * \project	WonderTrader
 *
 * \author Wesley
 * \date 2020/03/30
 * 
 * \brief 基础数据管理器接口定义
 */
#pragma once
#include <string>
#include <stdint.h>

#include "WTSMarcos.h"
#include "FasterDefs.h"

typedef faster_hashset<std::string> ContractSet;

NS_WTP_BEGIN
class WTSContractInfo;
class WTSArray;
class WTSSessionInfo;
class WTSCommodityInfo;

// 节日元组
typedef faster_hashset<uint32_t> HolidaySet;
// 节日模板结构体
typedef struct _TradingDayTpl
{
	uint32_t	_cur_tdate;
	HolidaySet	_holidays;

	_TradingDayTpl() :_cur_tdate(0){}
} TradingDayTpl;

// 数据管理器接口类
class IBaseDataMgr
{
public:
	// 获取品种信息
	virtual WTSCommodityInfo*	getCommodity(const char* exchgpid)						= 0;
	virtual WTSCommodityInfo*	getCommodity(const char* exchg, const char* pid)		= 0;
	virtual WTSCommodityInfo*	getCommodity(WTSContractInfo* ct)						= 0;
	// 获取合约信息
	virtual WTSContractInfo*	getContract(const char* code, const char* exchg = "")	= 0;
	virtual WTSArray*			getContracts(const char* exchg = "")					= 0; 
	// 获取交易时间段信息
	virtual WTSSessionInfo*		getSession(const char* sid)						= 0;
	virtual WTSSessionInfo*		getSessionByCode(const char* code, const char* exchg = "") = 0;
	virtual WTSArray*			getAllSessions() = 0;
	// 判断是否是节日
	virtual bool				isHoliday(const char* pid, uint32_t uDate, bool isTpl = false) = 0;
	// 计算交易日
	virtual uint32_t			calcTradingDate(const char* stdPID, uint32_t uDate, uint32_t uTime, bool isSession = false) = 0;
	// 获取分割时间
	virtual uint64_t			getBoundaryTime(const char* stdPID, uint32_t tDate, bool isSession = false, bool isStart = true) = 0;
};
NS_WTP_END