/TGame/TServerMS/Database/DBMessageHandler.cpp

http://awoe.googlecode.com/ · C++ · 83 lines · 60 code · 15 blank · 8 comment · 4 complexity · 47a2e8bf48e79de83d9bfcf96c28dca3 MD5 · raw file

  1. /////////////////////////////////////////////////////////////////////
  2. // DBMessageHandler.cpp
  3. //
  4. //
  5. // 11/16/2010
  6. //
  7. /////////////////////////////////////////////////////////////////////
  8. #include "stdafx.h"
  9. #include "DBMessageHandler.h"
  10. #include "Message/DBMessage.h"
  11. #include "DBMessageHandlerMapper.h"
  12. using namespace woe;
  13. extern INT64 sqlResult = 0;
  14. DBMessageHandler::MessageMap DBMessageHandler::ms_MessageMap;
  15. Service* DBMessageHandler::m_wpSvcLgc = NULL;
  16. DBMysql DBMessageHandler::m_DBMysql;
  17. DBMessageHandler::DBMessageHandler( )
  18. {
  19. }
  20. DBMessageHandler::~DBMessageHandler( )
  21. {
  22. }
  23. bool DBMessageHandler::initialize(IMsgHandlerInitData* data)
  24. {
  25. MsgHandlerInitDataDB* d = dynamic_cast<MsgHandlerInitDataDB*>(data);
  26. if (d)
  27. {
  28. m_wpSvcLgc = d->wpSvcLgc;
  29. DBMessageHandlerMapper mapper(this);
  30. if (m_DBMysql.Create( d->db_server, d->db_user, d->db_password, d->db_name, d->db_port))
  31. {
  32. LOG_INFO("Success to connect to database!");
  33. return true;
  34. }
  35. else
  36. {
  37. LOG_INFO("Failed to connect to database!");
  38. return false;
  39. }
  40. return true;
  41. }
  42. else
  43. return false;
  44. }
  45. void DBMessageHandler::addSubHandler( int nMsgCate, int nMsgID, IMsgHandler* pHandler )
  46. {
  47. ms_MessageMap.insert( MessageMap::value_type( int((nMsgCate<<16) | nMsgID), pHandler ) );
  48. }
  49. void DBMessageHandler::rmvSubHandler( int nMsgCate, int nMsgID)
  50. {;
  51. }
  52. bool DBMessageHandler::handleMsg( IMsg * message )
  53. {
  54. int nKey = (int)message->getMsgCate();
  55. nKey <<= 16;
  56. nKey |= message->getMsgID();
  57. MessageMapConstIter iter = ms_MessageMap.find( nKey );
  58. if ( iter != ms_MessageMap.end() )
  59. {
  60. iter->second->handleMsg( message );
  61. }
  62. else
  63. {
  64. // log()
  65. return false;
  66. }
  67. return true;
  68. }