PhmsPushSession.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include <string>
  3. #include "HttpPushSession.h"
  4. #include "PhmsRequest.h"
  5. #include "NetConfig.h"
  6. #include "Poco/AutoPtr.h"
  7. #include "Poco/DOM/Document.h"
  8. #include "Poco/Mutex.h"
  9. //推送的返回说明:
  10. //如果推送成功,调用成功回调函数
  11. //如果推送失败,调用失败回调函数
  12. //其中失败中的网络失败情况比较复杂。网络失败大致分类:超时、本地正常关闭或异常关闭、服务器正常关闭或异常关闭、其他
  13. //其中,因为推送无发送和接受超时,所以超时只有连接过程中才会出现。
  14. //以目前的程序结构来看,所有网络错误都不需要调用失败回调,只有其他逻辑错误才调用失败回调,由应用程序决定来处理。
  15. //网络错误:不调用失败回调;如果用户未调用推动退出,线程会继续重试,再发一次请求;如果用户调用了推送退出,线程退出
  16. //逻辑错误:调用失败回调,通知用户错误码
  17. using namespace std;
  18. using Poco::XML::Document;
  19. using Poco::AutoPtr;
  20. using Poco::Mutex;
  21. class CPhmsPushSession
  22. {
  23. public:
  24. CPhmsPushSession(void);
  25. ~CPhmsPushSession(void);
  26. void abort();
  27. string GetSessionId();
  28. void SetSessionId(string stringSessionId);
  29. void SetPushCallback(pHttpPushCallback pCallback);
  30. int PushMsg(string stringSenderId, string stringCaseId, string stringCaseType, string stringMsgType, string stringMsgDirection, string stringVersion);
  31. private:
  32. int ExecutePhmsPushSession(CPhmsRequest& phmsRequest);
  33. int GetNetConfig(string stringFilePath, CNetConfig& netConfig);
  34. int GetRequestXml(AutoPtr<Document> pDoc, string& stringXmlContent);
  35. private:
  36. CHttpPushSession* m_pHttpPushSession;
  37. bool m_bSsl;
  38. string m_stringSessionId;
  39. pHttpPushCallback m_pCallback;
  40. Mutex m_mutexAbortAndSslSwitch;
  41. };