ServerService.h
上传用户:hysujiao87
上传日期:2007-12-02
资源大小:156k
文件大小:2k
源码类别:

ICQ/即时通讯

开发平台:

C/C++

  1. #pragma once
  2. #include "UserList.h" // Added by ClassView
  3. #define WM_SERVICE_NOTIFY WM_USER + 101
  4. typedef struct tagListenParam
  5. {
  6. CUserList *list;
  7. CEvent *finishEvent;
  8. }LISTEN_PARAM;
  9. #define DEAL_REQUEST_BEGIN() 
  10. _ASSERTE(request != NULL && responseRoot != NULL);
  11. if (request == NULL || responseRoot == NULL)
  12. return E_INVALIDARG;
  13. CElement *requestRoot = request->get_root();
  14. _ASSERTE(requestRoot != NULL);
  15. if (requestRoot == NULL)
  16. return E_POINTER;
  17. class CXMLParser;
  18. class CElement;
  19. class CServerService
  20. {
  21. public:
  22. CServerService(void);
  23. ~CServerService(void);
  24. static HRESULT dealRequest(BYTE *data, 
  25.    int dataLen, 
  26.    const SOCKET &sock, 
  27.    const sockaddr_in &addrFrom,
  28.    CUserList *list);
  29. HRESULT startListen(CUserList *list);
  30. HRESULT stopListen();
  31. BOOL isListening(){
  32. return _listenThread != NULL;
  33. }
  34. protected:
  35. HANDLE _listenThread;
  36. CEvent _finishEvent;
  37. CUserList *_list;
  38. static UINT serviceProc(LPVOID wParam);
  39. static CString logMessage(CXMLParser *msg, const sockaddr_in &addrFrom);
  40. static HRESULT dealLogOnRequest(CXMLParser *request, CElement *responseRoot, CUserList &list);
  41. static HRESULT dealLogOffRequest(CXMLParser *request, CElement *responseRoot, CUserList &list);
  42. static HRESULT dealRegisterRequest(CXMLParser *request, CElement *responseRoot, CUserList &list);
  43. static HRESULT dealAddFriendRequest(CXMLParser *request, CElement *responseRoot, CUserList &list);
  44. static HRESULT dealDownloadFriendsRequest(CXMLParser *request, CElement *responseRoot, CUserList &list);
  45. static HRESULT dealQueryUserRequest(CXMLParser *request, CElement *responseRoot, CUserList &list);
  46. static HRESULT dealOnlineRequest(CXMLParser *request, CElement *responseRoot, const sockaddr_in &addrFrom, CUserList &list);
  47. };