ivservice.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef IVSERVICE_H
  2. #define IVSERVICE_H
  3. #include <memory>
  4. #include <QtCore/qglobal.h>
  5. #if defined(IVSERVICE_LIBRARY)
  6. # define IVSERVICE_EXPORT Q_DECL_EXPORT
  7. #else
  8. # define IVSERVICE_EXPORT Q_DECL_IMPORT
  9. #endif
  10. typedef void (*ServiceProc)(std::shared_ptr<char> pstr_request,const int nreqsize, std::shared_ptr<char> & pstr_response,int & nsize);
  11. //nRes 0 超时 1 正确返回
  12. typedef void (*ServiceAsycnProc)(std::shared_ptr<char> & pstr_response,int & nsize,int nRes);
  13. namespace iv {
  14. namespace service {
  15. class IVSERVICE_EXPORT Server
  16. {
  17. public:
  18. Server(const char * strservicename,ServiceProc xProc);
  19. ~Server();
  20. private:
  21. void * mpimpl;
  22. };
  23. class IVSERVICE_EXPORT Client
  24. {
  25. public:
  26. Client(const char * strservicename);
  27. ~Client();
  28. enum ServiceResRes
  29. {
  30. NO_RES = 1,
  31. HAVE_RES = 2
  32. };
  33. public:
  34. /**
  35. * @brief SendRequest 获得服务结果
  36. * @param pstr_request 请求的数据
  37. * @param pstr_response 返回的结果
  38. * @param timeout 超时时间
  39. * @return 如果成功,返回 HAVE_RES,如果超时,返回NO_RES
  40. */
  41. ServiceResRes SendRequest(std::shared_ptr<char> pstr_request,const int nreqsize,std::shared_ptr<char> & pstr_response,
  42. int & nressize,const int timeout = 100);
  43. /**
  44. * @brief AsyncSendRequest 异步请求服务
  45. * @param pstr_request 请求数据
  46. * @param nreqsize 请求数据大小
  47. * @param xProc 回调函数
  48. * @param timeout 超时时间,默认30秒
  49. * @return 0 Last Async Call Not Complete 1 Prepare Run Async
  50. */
  51. int AsyncSendRequest(std::shared_ptr<char> pstr_request,const int nreqsize,
  52. ServiceAsycnProc xProc,const int timeout = 30000);
  53. private:
  54. void * mpimpl;
  55. };
  56. }
  57. }
  58. #endif // IVSERVICE_H