SpModule.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #pragma once
  2. #include "sp_svc.h"
  3. #include "sp_iom.h"
  4. #include "sp_mod.h"
  5. #include "sp_cfg.h"
  6. #include "sp_log.h"
  7. #include "array.h"
  8. class SpEntity;
  9. typedef ErrorCodeEnum (*EntryRoutine)();
  10. class SpModule
  11. {
  12. public:
  13. SpModule(sp_mod_t *mod, sp_cfg_shell_module_t *cfg_mod);
  14. ~SpModule();
  15. ErrorCodeEnum Init(const char *url);
  16. VOID Term();
  17. sp_iom_t *get_iom() { return m_iom; }
  18. sp_mod_t *get_mod() { return m_mod; }
  19. ErrorCodeEnum AddEntityBase(CEntityBase *pEntity);
  20. ErrorCodeEnum RemoveEntityBase(CEntityBase *pEntity);
  21. ErrorCodeEnum GetEntityBase(const char *pszEntityName,CSmartPointer<CEntityBase> &pEntity);
  22. int GetEntityCount();
  23. SpEntity *FindEntity(const char *lpName);
  24. ErrorCodeEnum Run();
  25. static void SetEntryRoutine(EntryRoutine pfMain, EntryRoutine pfExit) { s_pfMain = pfMain;s_pfExit = pfExit;}
  26. void LogMessage(const LogTypeEnum LogType, const SeverityLevelEnum Level, DWORD dwSysErrorCode, DWORD dwUserErrorCode, const char *pMessage);
  27. void getEntryRoutine(void **pfMain, void **pfExit) { *pfMain = s_pfMain; *pfExit = s_pfExit; }
  28. private:
  29. int on_module_init();
  30. int on_module_term();
  31. static int __on_module_init(sp_mod_stub_t *, void *user_data);
  32. static int __on_module_term(sp_mod_stub_t *, void *user_data);
  33. private:
  34. DWORD m_dwEntityTls;
  35. array_header_t *m_arrEntity;
  36. sp_iom_t *m_iom;
  37. sp_mod_t *m_mod;
  38. sp_cfg_shell_module_t *m_cfg_mod;
  39. sp_log_client_t *m_anonymous_log;
  40. sp_mod_stub_t *m_stub;
  41. static EntryRoutine s_pfMain;
  42. static EntryRoutine s_pfExit;
  43. };
  44. SpModule *GetSpModule();