⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netdb.h.svn-base

📁 股票软件源码
💻 SVN-BASE
字号:
/*
	Cross Platform Core Code.

	Copyright(R) 2001-2002 Balang Software.
	All rights reserved.

	Using:
		class	CCodeTable;
		class	CNetDatabase;
*/

#ifndef	__ND_STKNET_NETDB_H__
#define __ND_STKNET_NETDB_H__

#include "XMLDoc.h"
#include "QSProfile.h"

class	CPackages;

/***
	数据包类,表示一个数据包
*/
class STKNET_API CPackage : public CXMLNode
{
public:
	CPackage( );
	CPackage( const CPackage &src );
	virtual ~CPackage( );

	enum PackageTypes {
		packageUnknown	=	0x00,
		packageCode		=	0x01,
		packageDay		=	0x02,
		packageMin5		=	0x03,
		packageDR		=	0x04,
		packageBasetext	=	0x05,
		packageBasetable=	0x06,
	};

	// virtual operation
	virtual	BOOL	SetAttribute( CMarkup & markup );

	CPackage & operator = ( const CPackage &src );
	BOOL operator<(CPackage& p) const;

	CString GetURL( CString strBasePath );	// 该数据包的URL
	BOOL	HasAlternateURL( ) const;		// 该数据包是否有替代URL
	CString	GetAlternateURL( CString strBasePath );		// 该数据包的替代URL

	BOOL	HasExpandPackage( ) const;		// 该数据包是否有扩展的数据包
	BOOL	ExpandYearPackage( CString strMonthfmt, CString strDayfmt, int nYear );	// 将年数据包扩展成12个月份分数据包
	BOOL	ExpandMonthPackage( CString strDayfmt, int nYear, int nMonth );			// 将月数据包扩展成日分数据包
	CPackages * GetExpandPackages( );		// 得到扩展数据包
	void	DeleteExpandPackages( );		// 释放扩展数据包
	
	CString		m_strURL;
	CString		m_strAlternateURL;
	int			m_nType;
	CSPTime		m_tmFrom;
	CSPTime		m_tmTo;
	int			m_nLength;
	CString		m_strDescript;
	BOOL		m_bIsZipped;
	BOOL		m_bIsTimefmt;

	// temp data
	BOOL		m_bDownloadOK;
	CString		m_strLocalFilename;
	CPackages * m_pExpandPackages;
};

typedef CArray<CPackage, CPackage &>	CPackageArray;

/***
	数据包数组
*/
class STKNET_API CPackages : public CPackageArray
{
public:
	CPackages( );
	virtual ~CPackages( );

	void	Clear( );
	BOOL	IsOK( );
	BOOL	SetRawXMLDocument( CString &strDoc );		// 设定原始XML文档,包含各种数据包信息
	virtual	BOOL	SetAttribute( CMarkup & markup );	// 设定数据包数组的综合信息
	BOOL	AddSmartAdditional( );		// 为没一个数据包自动加入扩展数据包
	BOOL	ExtractFromXMLDoc( );		// 获取数据包信息
	void	Sort( );					// 数据包按时间排序

	void	AppendPackages( CPackages * psrc );

	BOOL	GetLatestTime( CSPTime &tm, int packagetype );
	virtual	BOOL	GetLastErrorMessage(LPTSTR lpszError, UINT nMaxError);

public:
	BOOL			m_bIsOK;
	CXMLDocument	m_xmlDocument;

	CString			m_strVersion;
	int				m_nDataVersion;
	CString			m_strBasePath;
	CString			m_strYearfmt;
	CString			m_strMonthfmt;
	CString			m_strDayfmt;
	CString			m_strInfo;
	CString			m_strInfourl;
	CString			m_strLatestver;
};

/***
	产品服务器信息类,表示一个产品服务器
*/
class STKNET_API CDownloadServer : public CXMLNode
{
public:
	CDownloadServer( ) { };
	CDownloadServer( const CDownloadServer &src );
	virtual ~CDownloadServer( ) { };

	// virtual operation
	CDownloadServer & operator = ( const CDownloadServer & src );

	virtual	BOOL	SetAttribute( CMarkup & markup );
	BOOL	FromString( CString	string );
	CString	AsString( );

	CString	m_strAddress;
	UINT	m_nPort;
	CString	m_strDescript;
};

typedef	CArray<CDownloadServer, CDownloadServer &>	CDownloadServerArray;

BOOL	AliasSetAttribute( CMarkup & markup, CAlias & alias );
BOOL	QuoteServerSetAttribute( CMarkup & markup, CQuoteServer & qs );

/***
	产品服务器数组
*/
class STKNET_API CServers
{
public:
	CServers( );
	virtual ~CServers( );

	void	Clear( );
	BOOL	IsOK( );
	BOOL	SetRawXMLDocument( CString &strDoc );
	virtual	BOOL	SetAttribute( CMarkup & markup );
	BOOL	ExtractFromXMLDoc( );

	virtual	BOOL	GetLastErrorMessage(LPTSTR lpszError, UINT nMaxError);
	
	BOOL	SaveToProfile( );

public:
	BOOL			m_bIsOK;
	CXMLDocument	m_xmlDocument;

	CString			m_strVersion;
	
	CDownloadServerArray	m_aDownloadServers;
	CQuoteServerArray		m_aQuoteServers;
	CAliasArray				m_aAliases;
};

#define	ERR_NETDB_HTTPCLIENT	ERR_DB_MAX+1
#define	ERR_NETDB_PACKAGES		ERR_DB_MAX+2
#define	ERR_NETDB_SERVERS		ERR_DB_MAX+3
#define	ERR_NETDB_ZIPDLL		ERR_DB_MAX+4
#define	ERR_NETDB_ZIP			ERR_DB_MAX+5

#define	PROG_HTTPCONNECTTING	PROG_PROGRESS+1
#define	PROG_REQUESTSENT		PROG_PROGRESS+2
#define	PROG_REDIRECTING		PROG_PROGRESS+3
#define	PROG_TRANSFERRING		PROG_PROGRESS+4
#define	PROG_INSTALLPACKAGE		PROG_PROGRESS+5
#define	PROG_EXTRACTZIPFILES	PROG_PROGRESS+6
#define	PROG_ERRORPAC			PROG_PROGRESS+7

#define	PROG_NEWGROUP			PROG_PROGRESS+8
#define	PROG_NEWGROUPMSG		PROG_PROGRESS+9

/***
	网络数据类,提供对磁盘数据的操作接口,包括股票信息,各种周期K线数据,基本
	资料,权息资料的读取和安装。
	
	使用方法如下:
	CStDatabase::CreateSelfDB( "./" );

	CNetDatabase	db;
	db.SetRootPath( "./", IStStore::typeSelfDB );


	CStockContainer container;
	nLen	=	db.LoadCodetable( container );
	db.LoadBasetable( container );
	db.LoadKDataCache( container, NULL, NULL, 0, 0 );

	CStock	stock;
	stock.SetDatabase( &db );
	stock.PrepareData( CStock::dataK, CKData::ktypeDay );
	stock.PrepareData( CStock::dataDR );
	stock.PrepareData( CStock::dataK, m_nCurKType );
	CStockInfo	& info	=	stock.GetStockInfo();
	CKData	& kday	=	stock.GetKDataDay();
	CKData	& kdata	=	stock.GetKData(m_nCurKType);
	kday.SetDRData( stock.GetDRData() );
	kday.ChangeCurFormat( CKData::formatXDRdown, AfxGetProfile().GetAutoResumeDRBegin(), AfxGetProfile().GetAutoResumeDRLimit() );

	注意:与父类CStDatabase的用法相同
*/
class STKNET_API CNetDatabase : public CStDatabase
{
public:
	CNetDatabase();
	virtual ~CNetDatabase();

	BOOL SetServer( LPCTSTR lpszServer, INTERNET_PORT port = INTERNET_DEFAULT_HTTP_PORT );	// 设定服务器
	BOOL SetAccessType( int nAccessType, int nProxyType, LPCTSTR lpszProxyAddress, UINT nProxyPort,
								LPCSTR lpszProxyUser, LPCTSTR lpszProxyPasswd );	// 设定代理选项
	BOOL Login( LPCTSTR lpszRegCode, LPCTSTR lpszUserName, LPCTSTR lpszPasswd, LPCTSTR lpszVersion );	// 登陆服务器
	BOOL Logout( );		// 退出登陆

	BOOL	NetloadPackageInfo( PROGRESS_CALLBACK fnCallback, void *cookie );	// 从网络下载数据包信息文件(.xml)
	BOOL	NetloadServerInfo( PROGRESS_CALLBACK fnCallback, void *cookie );	// 从网络下载服务器信息文件(.xml)
	int		NetloadCodetbl( PROGRESS_CALLBACK fnCallback, void *cookie );		// 从网络下载股票代码表
	int		NetloadDayKLine( LPCTSTR lpszStockCode, CSPTime *ptmFrom, CSPTime *ptmTo, PROGRESS_CALLBACK fnCallback, void *cookie );		// 从网络下载日K线数据
	int		Netload5MinKLine( LPCTSTR lpszStockCode, CSPTime *ptmFrom, CSPTime *ptmTo, PROGRESS_CALLBACK fnCallback, void *cookie );	// 从网络下载5分钟K线数据
	int		NetloadDRData( LPCTSTR lpszStockCode, CSPTime *ptmFrom, CSPTime *ptmTo, PROGRESS_CALLBACK fnCallback, void *cookie );		// 从网络下载除权除息数据
	int		NetloadBasetext( LPCTSTR lpszStockCode, CSPTime *ptmFrom, CSPTime *ptmTo, PROGRESS_CALLBACK fnCallback, void *cookie );		// 从网络下载F10基本资料文本
	int		NetloadBasetable( LPCTSTR lpszStockCode, CSPTime *ptmFrom, CSPTime *ptmTo, PROGRESS_CALLBACK fnCallback, void *cookie );		// 从网络下载财务资料表

	int		NetloadPackage( int nPackageType, CSPTime &tmFrom, CSPTime &tmTo, PROGRESS_CALLBACK fnCallback, void *cookie );	// 根据类型和起止日期从网络下载数据包

	BOOL	GetLatestTimeNet( CSPTime &tm, int packagetype );		// 得到服务器上最近的数据日期

	CServers	& GetServers( );	// 得到所有服务器列表
	CPackages	& GetPackages( );	// 得到所有数据包列表

	// CStDatabase virtual functions
	virtual	BOOL	GetLastErrorMessage(LPTSTR lpszError, UINT nMaxError);	// 得到最近错误信息

	static	CString	GetProgressMessage(UINT nProgressCode);	// 得到进度说明
	
	virtual	int	GetMaxStockNumber( );		// 得到股票数量
	virtual	int	LoadCodetable( CStockContainer & container );	// 读取所有股票的信息
	virtual	int	LoadBaseText( CStock *pstock );					// 读取某一股票的基本资料文本
	virtual	int	LoadKData( CStock *pstock, int period );		// 读取某一股票的某个周期的K线数据
	virtual	int	LoadDRData( CStock *pstock );					// 读取某一股票的除权除息资料

	BOOL	InstallPackageEx( CPackage &pac, const char *zipfilename,
								PROGRESS_CALLBACK fnCallback, void *cookie );	// 安装数据包
	BOOL	InstallPackagePath( CPackage &pac, const char *path,
								PROGRESS_CALLBACK fnCallback, void *cookie,
								int nTotalCount, int nFinishCount, BOOL bDeleteAfterInstall = TRUE );
	BOOL	InstallPackage( CPackage &pac, const char *filename,
								PROGRESS_CALLBACK fnCallback, void *cookie );

	BOOL	EmptyTempDirectory( LPCTSTR lpszPath = NULL );						// 清空某个目录
	static	int		GetFileCount( const char * path, BOOL bRecurse = TRUE );	// 得到某个目录下的文件个数

protected:
	BOOL	GetTempFile( CString &rString );
	BOOL	RemoveTempFile( CString sFileName );
	BOOL	OpenTempFile( CFile &file );
	BOOL	CloseAndRemoveTempFile( CFile &file );
	BOOL	GetTempNewDirectory( CString &sTempNewDir );
	BOOL	RemoveTempNewDirectory( CString sTempNewDir );

protected:
	CPackages		m_packages;
	CServers		m_servers;
	CHttpClient		m_httpClient;
};

#endif //__ND_STKNET_NETDB_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -