// TSCache.h: interface for the CTSCache class.
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_TSCACHE_H__61CC5EB5_4560_4F34_A6DA_AA35B09D79EC__INCLUDED_)
#define AFX_TSCACHE_H__61CC5EB5_4560_4F34_A6DA_AA35B09D79EC__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#include "Stockdrv.h"
#include "SPTime.h"typedef struct _ts_packet_t {
UINT m_nMsgType;
PRCV_DATA m_pRCV_DATA;
} TS_PACKET, PTS_PACKET;
typedef CArray< TS_PACKET, TS_PACKET &> CTSPacketArray;class CTSCache
{
public:
CTSCache();
virtual ~CTSCache(); void SetLocalLatest(CSPTime t);
CSPTime GetLocalLatest(); static CTSCache & GetInstance(); void ClearReceiveBuffer() { m_nBufLen = 0; } // decode net received data
int OnReceive( BYTE * buf, size_t len );
int DecodePacket( );
int FindFirstPacketLength( );
size_t AlignBuffer( int nStart, BOOL bRemovePrev );
int TryGetPacket( int nPacketLen );
int DiscardPacket( int nPacketLen ); // packets operation
BOOL PushPacket( UINT nMsgType, PRCV_DATA pRCV_DATA );
BOOL PopPacket( UINT & nMsgType, PRCV_DATA & pRCV_DATA );
void FreePacket( PRCV_DATA pRCV_DATA ); // set report
BOOL StoreReports( );
BOOL LoadReports( );
BOOL ReserveReportsSize( int size );
BOOL PushReport( int nNo, RCV_REPORT_STRUCTEx * pBuf );
BOOL PushReport( char * pszStockCode, RCV_REPORT_STRUCTEx * pBuf );
int PushReport( RCV_REPORT_STRUCTEx * pBuf, int size ); // get report
int GetTotalNumber();
BOOL GetStockByNoEx( int nNo, RCV_REPORT_STRUCTEx * pBuf );
BOOL GetStockByCodeEx(char * pszStockCode,int nMarket,RCV_REPORT_STRUCTEx * pBuf);protected:
CSPTime m_tmLocalLatest; BYTE m_buffer[0x80000]; // 512k bytes buffer
size_t m_nBufLen;
CCriticalSection m_mutexBuffer; CTSPacketArray m_aPackets;
CCriticalSection m_mutexPackets; CMapStringToPtr m_mapReports;
CArray<RCV_REPORT_STRUCTEx, RCV_REPORT_STRUCTEx &> m_aReports;
CCriticalSection m_mutexReports;
};#endif // !defined(AFX_TSCACHE_H__61CC5EB5_4560_4F34_A6DA_AA35B09D79EC__INCLUDED_)
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_TSCACHE_H__61CC5EB5_4560_4F34_A6DA_AA35B09D79EC__INCLUDED_)
#define AFX_TSCACHE_H__61CC5EB5_4560_4F34_A6DA_AA35B09D79EC__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#include "Stockdrv.h"
#include "SPTime.h"typedef struct _ts_packet_t {
UINT m_nMsgType;
PRCV_DATA m_pRCV_DATA;
} TS_PACKET, PTS_PACKET;
typedef CArray< TS_PACKET, TS_PACKET &> CTSPacketArray;class CTSCache
{
public:
CTSCache();
virtual ~CTSCache(); void SetLocalLatest(CSPTime t);
CSPTime GetLocalLatest(); static CTSCache & GetInstance(); void ClearReceiveBuffer() { m_nBufLen = 0; } // decode net received data
int OnReceive( BYTE * buf, size_t len );
int DecodePacket( );
int FindFirstPacketLength( );
size_t AlignBuffer( int nStart, BOOL bRemovePrev );
int TryGetPacket( int nPacketLen );
int DiscardPacket( int nPacketLen ); // packets operation
BOOL PushPacket( UINT nMsgType, PRCV_DATA pRCV_DATA );
BOOL PopPacket( UINT & nMsgType, PRCV_DATA & pRCV_DATA );
void FreePacket( PRCV_DATA pRCV_DATA ); // set report
BOOL StoreReports( );
BOOL LoadReports( );
BOOL ReserveReportsSize( int size );
BOOL PushReport( int nNo, RCV_REPORT_STRUCTEx * pBuf );
BOOL PushReport( char * pszStockCode, RCV_REPORT_STRUCTEx * pBuf );
int PushReport( RCV_REPORT_STRUCTEx * pBuf, int size ); // get report
int GetTotalNumber();
BOOL GetStockByNoEx( int nNo, RCV_REPORT_STRUCTEx * pBuf );
BOOL GetStockByCodeEx(char * pszStockCode,int nMarket,RCV_REPORT_STRUCTEx * pBuf);protected:
CSPTime m_tmLocalLatest; BYTE m_buffer[0x80000]; // 512k bytes buffer
size_t m_nBufLen;
CCriticalSection m_mutexBuffer; CTSPacketArray m_aPackets;
CCriticalSection m_mutexPackets; CMapStringToPtr m_mapReports;
CArray<RCV_REPORT_STRUCTEx, RCV_REPORT_STRUCTEx &> m_aReports;
CCriticalSection m_mutexReports;
};#endif // !defined(AFX_TSCACHE_H__61CC5EB5_4560_4F34_A6DA_AA35B09D79EC__INCLUDED_)
解决方案 »
- 纯sdk编写对话框程序显示不出来
- 在vista下使用ChangeDisplaySettings扩展桌面出错,求解
- 关于搜索引擎设计问题?
- 如何创建一个无句柄的图形组件,组件支持鼠标消息操作?
- http服务器程序,当请求的是一个htm文件的时候,可以在浏览器打开,但是换成了asp文件,为什么不行呢?
- 串口编程问题(Run-time error '8020':Error reading comm device)
- 请教!!急!
- 怎么把已使用的ocx控件从内存中消除?
- 滤波器设计 (高手请进)!!!!
- !各们大虾,你们说到底是DHTML好,还是ASP好。最好打一比方,OK.
- 对CListCtrl控件刷新的问题
- 如何在VC中实现“由输入的ipv6地址,得到对应的域名”?
用Word打开,在菜单上选择工具下面的字数统计,可以得到这个文件的字符数等信息,这也是一种分析。
上段代码与下段有何不同呢?上段是_ts_packet_t,下段为何可命名为:CTSCache// TSCache.h: interface for the CTSCache class.
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_TSCACHE_H__61CC5EB5_4560_4F34_A6DA_AA35B09D79EC__INCLUDED_)
#define AFX_TSCACHE_H__61CC5EB5_4560_4F34_A6DA_AA35B09D79EC__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000#include "Stockdrv.h"
#include "SPTime.h"typedef struct _ts_packet_t {
UINT m_nMsgType;
PRCV_DATA m_pRCV_DATA;
} TS_PACKET, PTS_PACKET;
typedef CArray< TS_PACKET, TS_PACKET &> CTSPacketArray;class CTSCache
{
public:
CTSCache();
virtual ~CTSCache(); void SetLocalLatest(CSPTime t);
CSPTime GetLocalLatest(); static CTSCache & GetInstance(); void ClearReceiveBuffer() { m_nBufLen = 0; } // decode net received data
int OnReceive( BYTE * buf, size_t len );
int DecodePacket( );
int FindFirstPacketLength( );
size_t AlignBuffer( int nStart, BOOL bRemovePrev );
int TryGetPacket( int nPacketLen );
int DiscardPacket( int nPacketLen ); // packets operation
BOOL PushPacket( UINT nMsgType, PRCV_DATA pRCV_DATA );
BOOL PopPacket( UINT & nMsgType, PRCV_DATA & pRCV_DATA );
void FreePacket( PRCV_DATA pRCV_DATA ); // set report
BOOL StoreReports( );
BOOL LoadReports( );
BOOL ReserveReportsSize( int size );
BOOL PushReport( int nNo, RCV_REPORT_STRUCTEx * pBuf );
BOOL PushReport( char * pszStockCode, RCV_REPORT_STRUCTEx * pBuf );
int PushReport( RCV_REPORT_STRUCTEx * pBuf, int size ); // get report
int GetTotalNumber();
BOOL GetStockByNoEx( int nNo, RCV_REPORT_STRUCTEx * pBuf );
BOOL GetStockByCodeEx(char * pszStockCode,int nMarket,RCV_REPORT_STRUCTEx * pBuf);protected:
CSPTime m_tmLocalLatest; BYTE m_buffer[0x80000]; // 512k bytes buffer
size_t m_nBufLen;
CCriticalSection m_mutexBuffer; CTSPacketArray m_aPackets;
CCriticalSection m_mutexPackets; CMapStringToPtr m_mapReports;
CArray<RCV_REPORT_STRUCTEx, RCV_REPORT_STRUCTEx &> m_aReports;
CCriticalSection m_mutexReports;
};#endif // !defined(AFX_TSCACHE_H__61CC5EB5_4560_4F34_A6DA_AA35B09D79EC__INCLUDED_)