RoleNameFilter.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // RoleNameFilter.cpp: implementation of the CRoleNameFilter class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "RoleNameFilter.h"
  6. //////////////////////////////////////////////////////////////////////
  7. const char file_rolenameflt[] = "goddess_rolename.flt";
  8. //////////////////////////////////////////////////////////////////////
  9. const size_t EXP_MAXLEN = 1024;
  10. //////////////////////////////////////////////////////////////////////
  11. // Construction/Destruction
  12. //////////////////////////////////////////////////////////////////////
  13. CRoleNameFilter::CRoleNameFilter()
  14. : m_pTextFilter(NULL)
  15. {
  16. }
  17. CRoleNameFilter::~CRoleNameFilter()
  18. {
  19. }
  20. BOOL CRoleNameFilter::Initialize()
  21. {
  22. if (m_pTextFilter)
  23. return FALSE;
  24. FILE* pFileRoleNameFlt = fopen(file_rolenameflt, "rt");
  25. if (pFileRoleNameFlt == NULL)
  26. return FALSE;
  27. extern CFilterTextLib g_libFilterText;
  28. if (SUCCEEDED(g_libFilterText.CreateTextFilter(&m_pTextFilter)))
  29. {
  30. while (!feof(pFileRoleNameFlt))
  31. {
  32. char exp[EXP_MAXLEN];
  33. if (!fgets(exp, EXP_MAXLEN, pFileRoleNameFlt))
  34. break;
  35. if (!exp[0])
  36. continue;
  37. //cut the 'rn' of tail
  38. size_t explen = strlen(exp);
  39. while (explen > 0 && (exp[explen - 1] == 'r' || exp[explen - 1] == 'n'))
  40. exp[--explen] = 0;
  41. if (explen <= 0)
  42. continue;
  43. m_pTextFilter->AddExpression(exp);
  44. }
  45. }
  46. fclose(pFileRoleNameFlt);
  47. return m_pTextFilter != NULL;
  48. }
  49. BOOL CRoleNameFilter::Uninitialize()
  50. {
  51. if (m_pTextFilter)
  52. {
  53. m_pTextFilter->Release();
  54. m_pTextFilter = NULL;
  55. }
  56. return TRUE;
  57. }
  58. BOOL CRoleNameFilter::IsTextPass(LPCTSTR text)
  59. {
  60. if (!m_pTextFilter)
  61. return FALSE;
  62. return m_pTextFilter->IsTextPass(text);
  63. }