stock_data_manger.h
来自「股票分析源代码」· C头文件 代码 · 共 158 行
H
158 行
#ifndef __HBSTOCK2_STOCK_DATA_MANGER_H__
#define __HBSTOCK2_STOCK_DATA_MANGER_H__
#include "hbstock2/stock_data.h"
#include <ace/Singleton.h>
namespace hbstock2
{
class MarketSort
{
public:
bool operator() (const Market& market1,const Market& market2) const;
};
class DataLoaderPtrSort
{
public:
bool operator() (const DataLoaderPtr dataloaderPtr1,const DataLoaderPtr dataloaderPtr2) const;
};
typedef std::set<DataLoaderPtr,DataLoaderPtrSort> SetDataLoader;
typedef std::set<Market,MarketSort > SetMarket;
typedef ACE_Refcounted_Auto_Ptr<SetMarket ,ACE_Null_Mutex> SetMarketPtr;
typedef ACE_Refcounted_Auto_Ptr<SetDataLoader ,ACE_Null_Mutex> SetDataLoaderPtr;
class DataManger{
private:
std::map<std::string,gnu::ACE_DLL_Ptr> map_dll_loader;
SetMarketPtr set_market_ptr;
SetDataLoaderPtr set_dataloader_ptr;
SetDataLoaderPtr m_set_default_day_dataloader_ptr;
SetDataLoaderPtr m_set_default_min5_dataloader_ptr;
//void init_market();
bool is_contain_dataloader(DataLoaderPtr dataloaderPtr);
std::string str_default_dir;
char p_file_prefix_default[256];
bool is_inited ;
protected:
void* dso_loader(const std::string& str_file,const char* symbolname) throw (hbstock_exception);
bool do_div(VectStockData& vect_stockdata,
const std::string& str_market_code,
const std::string& str_stock_code,
DIV_TYPE div_type=NONE,
bool is_included_div_data=true);
public:
DataManger();
virtual ~DataManger();
// dynamic load dataloader
int load_dso_from_dir(const std::string& str_dir,const char* p_file_prefix=NULL);
int load_dso_from_file(const std::string& str_file);
int load_dso_from_default_dir(void);
int load_default_day_dataloader();
int load_default_min5_dataloader();
//market type
bool register_market(const Market& market);
bool unregister_market(const std::string& market_code);
bool get_market(Market& market)const;
bool check_market(const std::string& market_code)const;
SetMarketPtr get_all_market() const;
// dataloader
void reset_default_dataloader();
bool set_default_day_dataloader(const char* p_dataloader_name = NULL);
bool set_default_min5_dataloader(const char* p_dataloader_name = NULL);
SetDataLoaderPtr get_default_day_dataloaders() const;
SetDataLoaderPtr get_default_min5_dataloaders() const;
DataLoaderPtr get_dataloader(const std::string& dataloader_name) const;
DataLoaderPtr get_day_default_dataloader(const std::string& market_code) const;
DataLoaderPtr get_min5_default_dataloader(const std::string& market_code) const;
SetDataLoaderPtr get_day_dataloaders(const std::string& market_code) const;
SetDataLoaderPtr get_min5_dataloaders(const std::string& market_code)const;
SetDataLoaderPtr get_all_dataloaders() const;
SetDataLoaderPtr get_all_day_dataloaders() const;
SetDataLoaderPtr get_all_min5_dataloaders() const;
bool register_dataloader(DataLoaderPtr dataloaderPtr);
bool unregister_dataloader(const std::string& dataloader_name);
void print_info() const;
// init and finit
virtual int init (void);
virtual int fini (void);
// get stock code of index
std::string get_stock_code_of_index(const std::string& market_code);
//get stocks
bool get_stock_code(std::vector<std::string>& vect_stock_code,
const std::string& market_code, const char* p_prefix_name=NULL)
throw (stock_data_exception);
bool check_transform_stock_code(const std::string& str_stock_code_in,
std::string& str_stock_code_out,std::string& str_market_code);
//load data
virtual bool is_support_div(const std::string& str_market_code) const ;
virtual bool load_day_data(VectStockData& vect_stockdata,
const std::string& str_stock_code,
const char* p_ch_from_date,
const char* p_ch_to_date=0,
DIV_TYPE div_type=NONE,
bool is_included_div_data=true)
throw (stock_data_exception);
/*
* is_previous_data=true , means 20051010 is in 20051030's front
*/
virtual bool load_day_data(VectStockData& vect_stockdata,
const std::string& str_stock_code,
const char* p_ch_date,
int data_length=0,
bool is_previous_data=true,
DIV_TYPE div_type=NONE ,
bool is_included_div_data=true)
throw (stock_data_exception) ;
virtual bool load_min5_data(VectStockData& vect_stockdata,
const std::string& str_stock_code,
const char* p_ch_from_date,
const char* p_ch_to_date=0,
DIV_TYPE div_type=NONE,
bool is_included_div_data=true)
throw (stock_data_exception) ;
virtual bool load_min5_data(VectStockData& vect_stockdata,
const std::string& str_stock_code,
const char* p_ch_date,
int data_length=0,
bool is_previous_data=true,
DIV_TYPE div_type=NONE ,
bool is_included_div_data=true)
throw (stock_data_exception);
}; //DataManger
// ACE_Recursive_Thread_Mutex ACE_Null_Mutex
typedef ACE_Singleton<DataManger,ACE_Thread_Mutex> DataMangerInst;
} // namespace hbstock2
#endif // #ifndef __HBSTOCK2_STOCK_DATA_MANGER_H__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?