linux版本中间件

AutoCall.h 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #include <list>
  3. #include <map>
  4. #include <mutex>
  5. #include <string>
  6. #include <tuple>
  7. #include <functional>
  8. #include "DevInfoInc.h"
  9. #include <condition_variable>
  10. #include <functional>
  11. typedef struct tagTask{
  12. int id ;
  13. std::string agent ;
  14. std::string number;
  15. int type ;
  16. std::string content ;
  17. long uniqueId(void) const { return reinterpret_cast<long>(this); }
  18. tagTask() {
  19. id = 0;
  20. agent.clear();
  21. number.clear();
  22. type = 0;
  23. content.clear();
  24. }
  25. }Task; // 坐席 手机号 外呼类型 内容
  26. class AutoCall
  27. {
  28. public:
  29. AutoCall();
  30. ~AutoCall();
  31. void startTask();
  32. void stopTask();
  33. void addTask();
  34. void waitTask(std::string agentId);
  35. void updateTask(std::string id);
  36. typedef std::function<void(Task)> DealFun; // 定义回调函数类型
  37. void setDetalTaskFun(DealFun fun) { this->fun = fun; };
  38. private:
  39. void __threadFun();
  40. void __threadFunV2();
  41. bool __dealTask();
  42. private:
  43. std::string m_RecordFile; // 进行语音外呼时的语音文件路径
  44. AUTO_CALL_TYPE m_CallType; // 自动外呼类型
  45. std::map<int, Task> m_Tasks;
  46. std::mutex mut;
  47. std::map<int, Task> m_WaitTasks;
  48. std::mutex mutWait;
  49. std::mutex g_mut;
  50. volatile bool m_IsStop;
  51. std::condition_variable con;
  52. DealFun fun; // 任务回调函数
  53. };