Alarm.h
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:2k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. /*
  2. Cross Platform Core Code.
  3. Copyright(R) 2001-2002 Balang Software.
  4. All rights reserved.
  5. Using:
  6. Alarm functions.
  7. */
  8. #if !defined( __STKLIB_ALARM_H__ )
  9. #define __STKLIB_ALARM_H__
  10. #pragma pack(1)
  11. #define ALARM_TYPE_DIFFPERCENTMORE 1
  12. #define ALARM_TYPE_DIFFPERCENTLESS 2
  13. #define ALARM_TYPE_TRADEVOLUME 3
  14. typedef struct _alarm_cond_t {
  15. DWORD m_type;
  16. DWORD m_dwMarket;
  17. char m_szCode[STKLIB_MAX_CODE2];
  18. float m_fValue;
  19. char m_szReserved[32];
  20. }ALARMCOND;
  21. typedef CSPArray<ALARMCOND, ALARMCOND &> CAlarmCondArray;
  22. class STKLIB_API CAlarmCondContainer : public CAlarmCondArray
  23. {
  24. public:
  25. virtual ~CAlarmCondContainer() { RemoveAll(); }
  26. // for access CAlarmCondArray
  27. virtual void RemoveAll( )
  28. {
  29. CSPMutex::Scoped l(m_mutex);
  30. CAlarmCondArray::RemoveAll();
  31. }
  32. virtual int Add( ALARMCOND & newElement)
  33. {
  34. CSPMutex::Scoped l(m_mutex);
  35. return CAlarmCondArray::Add(newElement);
  36. }
  37. virtual void RemoveAt(int nIndex, int nCount = 1)
  38. {
  39. CSPMutex::Scoped l(m_mutex);
  40. CAlarmCondArray::RemoveAt(nIndex,nCount);
  41. }
  42. // extra
  43. static CSPString AlarmCondToString( ALARMCOND & cond );
  44. protected:
  45. CSPMutex m_mutex;
  46. };
  47. typedef struct _alarm_t {
  48. REPORT report;
  49. ALARMCOND cond;
  50. }ALARM;
  51. typedef CSPArray<ALARM, ALARM &> CAlarmArray;
  52. class STKLIB_API CAlarmContainer : public CAlarmArray
  53. {
  54. public:
  55. static CSPString GetDescript( ALARM & alarm );
  56. enum { MaxAlarms = 1024 };
  57. virtual ~CAlarmContainer() { RemoveAll(); }
  58. // for access CAlarmArray
  59. virtual void RemoveAll( )
  60. { CAlarmArray::RemoveAll(); }
  61. virtual int Add( ALARM & newElement)
  62. {
  63. CSPMutex::Scoped l(m_mutex);
  64. if( GetSize()>=MaxAlarms ) return -1;
  65. return CAlarmArray::Add(newElement);
  66. }
  67. virtual void RemoveAt(int nIndex, int nCount = 1)
  68. {
  69. CSPMutex::Scoped l(m_mutex);
  70. CAlarmArray::RemoveAt(nIndex,nCount);
  71. }
  72. // process
  73. BOOL HasWarning( ) { return GetSize() > 0; }
  74. int AddAlarm( ALARMCOND * pcond, REPORT * pReport, REPORT * pReportLast );
  75. BOOL OnReceiveReport( CStockInfo * pInfo, REPORT * pReport, REPORT * pReportLast );
  76. protected:
  77. CSPMutex m_mutex;
  78. };
  79. STKLIB_API CAlarmContainer & AfxGetAlarmContainer();
  80. #pragma pack()
  81. #endif // __STKLIB_ALARM_H__