62 void Start(std::unique_ptr<XrdClHttp::CurlWorker> self, std::thread tid);
71 m_maintenance_period.store(maint, std::memory_order_relaxed);
79 static void ShutdownAll();
85 static std::vector<std::unique_ptr<XrdClHttp::CurlWorker>> m_workers;
87 static std::mutex m_workers_mutex;
89 std::chrono::steady_clock::time_point m_last_prefix_log;
91 std::shared_ptr<HandlerQueue> m_queue;
96 std::shared_ptr<HandlerQueue> m_continue_queue;
98 std::unordered_map<CURL*, std::pair<std::shared_ptr<CurlOperation>, std::chrono::system_clock::time_point>> m_op_map;
100 std::string m_x509_client_cert_file;
101 std::string m_x509_client_key_file;
103 const static unsigned m_max_ops{20};
104 static std::atomic<unsigned> m_maintenance_period;
107 int m_shutdown_pipe_r{-1};
108 int m_shutdown_pipe_w{-1};
110 std::mutex m_start_lock;
112 std::condition_variable m_start_complete_cv;
114 bool m_start_complete{
false};
116 std::thread m_self_tid;
120 std::atomic<uint64_t> m_conncall_timeout{};
121 std::atomic<uint64_t> m_client_timeout{};
122 std::atomic<std::chrono::system_clock::duration::rep> m_duration{};
123 std::atomic<uint64_t> m_error{};
124 std::atomic<uint64_t> m_finished{};
125 std::atomic<std::chrono::steady_clock::duration::rep> m_pause_duration{};
126 std::atomic<uint64_t> m_started{};
127 std::atomic<uint64_t> m_server_timeout{};
128 std::atomic<uint64_t> m_bytes{};
140 void OpRecord(XrdClHttp::CurlOperation &op, OpKind);
142 static std::atomic<uint64_t> m_conncall_errors;
143 static std::atomic<uint64_t> m_conncall_req;
144 static std::atomic<uint64_t> m_conncall_success;
145 static std::atomic<uint64_t> m_conncall_timeout;
146 static std::array<std::array<OpStats, 403>,
static_cast<size_t>(XrdClHttp::CurlOperation::HttpVerb::Count)> m_ops;
147 std::atomic<std::chrono::system_clock::rep> m_last_completed_cycle;
148 std::atomic<std::chrono::system_clock::rep> m_oldest_op;
151 static std::vector<std::atomic<std::chrono::system_clock::rep>*> m_workers_last_completed_cycle;
152 static std::vector<std::atomic<std::chrono::system_clock::rep>*> m_workers_oldest_op;
153 size_t m_stats_offset{0};
154 static std::mutex m_worker_stats_mutex;
157 static struct initcontrol {