#ifndef DISTRIBUTION_SERVICE_TASK_INFO_H #define DISTRIBUTION_SERVICE_TASK_INFO_H #include "CCDatagramSocket.h" #include "CCThreadPool.h" #include "TL/Map.h" #include "PushFlowTask.h" struct Dist_Tasks { JSON_TYPE_INTRUSIVE(Dist_Tasks,TaskID,TaskType,Terms,AimIP,AimPort,ServerPort,SendOrder,TaskOrder); int TaskID = -1; int TaskType = 0; CTL::String AimIP; int AimPort = 10062; int ServerPort = 10060; CCVector Terms; int SendOrder = 0; std::vector TaskOrder{}; }; class TaskInfo { inline static CTL::Map TaskInfoMap; inline static CTL::DatagramSocket* socket = nullptr; inline static std::shared_mutex mutex_socket; public: inline static CTL::ThreadPool thread_pool; TaskInfo(); ~TaskInfo(); void BitstreamHeartbeat(); int Flag = 0; int Type = 0; int TaskID = -1; int TaskType = 0; int ServerPort = 10060; int SendOrder = 0; std::vector TaskOrder{}; CTL::Map Terms; PushFlowTask* pushFlowTask = nullptr; private: public: static void InitSocket(); static void Start(TaskInfo* taskInfo); static void Stop(int TaskID); static TaskInfo* getData(int TaskID); static void StopAll(); }; #endif