PluginInstance.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #pragma once
  2. #include <string>
  3. #include <mutex>
  4. #include <memory>
  5. #include <thread>
  6. #include <functional>
  7. #include <cpp_redis/cpp_redis>
  8. #include <WinSock2.h>
  9. #pragma comment(lib, "ws2_32.lib")
  10. #pragma comment(lib, "tacopie.lib")
  11. #pragma comment(lib, "cpp_redis.lib")
  12. #include <ScopeGuard.hpp>
  13. struct position_context
  14. {
  15. UINT64 level;
  16. UINT64 position_id;
  17. UINT64 request_id;
  18. UINT64 cur_ord;
  19. UINT64 volume; // Õý±íʾbuy£¬¸º±íʾsell
  20. };
  21. class CPluginInstance
  22. : public IMTServerPlugin
  23. , public IMTConPluginSink
  24. //, public IMTOrderSink
  25. , public IMTTradeSink
  26. {
  27. public:
  28. CPluginInstance();
  29. virtual ~CPluginInstance();
  30. virtual void Release();
  31. virtual MTAPIRES Start(IMTServerAPI* server);
  32. virtual MTAPIRES Stop();
  33. virtual void OnPluginUpdate(const IMTConPlugin* plugin);
  34. //virtual void OnOrderAdd(const IMTOrder* order);
  35. //virtual void OnOrderUpdate(const IMTOrder* order);
  36. //virtual void OnOrderDelete(const IMTOrder* order);
  37. //virtual void OnOrderClean(const UINT64 login);
  38. //virtual void OnDealAdd(const IMTDeal* deal);
  39. //virtual void OnDealUpdate(const IMTDeal* deal);
  40. //virtual void OnDealDelete(const IMTDeal* deal);
  41. //virtual void OnDealClean(const UINT64 login);
  42. //virtual void OnDealPerform(const IMTDeal* deal, IMTAccount* account, IMTPosition* position);
  43. virtual void OnTradeRequestProcess(const IMTRequest* request, const IMTConfirm* confirm, const IMTConGroup* group,
  44. const IMTConSymbol* symbol, const IMTPosition* position, const IMTOrder* order, const IMTDeal* deal);
  45. protected:
  46. virtual MTAPIRES LoadParam();
  47. private:
  48. IMTServerAPI* m_api;
  49. IMTConPlugin* m_config;
  50. MTServerInfo m_info;
  51. std::mutex m_lock;
  52. bool m_enable;
  53. MTAPIRES LoadLogins();
  54. std::vector<UINT64> m_followers;
  55. std::shared_ptr<cpp_redis::client> m_redis_client;
  56. bool m_redis_conn;
  57. bool start_redis();
  58. void stop_redis();
  59. void keep_alive();
  60. bool m_redis_error_notified;
  61. std::thread m_work_thread;
  62. std::string m_redis_server;
  63. //std::string m_redis_user;
  64. std::string m_redis_password;
  65. int m_redis_port;
  66. wchar_t m_groups[1024];
  67. //std::wstring m_logins;
  68. UINT64 m_trader;
  69. int m_step;
  70. int m_tolerance;
  71. };