namespace immutable_obj_cache {
CacheClient::CacheClient(const std::string& file, CephContext* ceph_ctx)
- : m_cct(ceph_ctx), m_io_service_work(m_io_service),
+ : m_cct(ceph_ctx), m_io_service_work(m_io_service.get_executor()),
m_dm_socket(m_io_service), m_ep(stream_protocol::endpoint(file)),
m_io_thread(nullptr), m_session_work(false), m_writing(false),
m_reading(false), m_sequence_id(0) {
if (m_worker_thread_num != 0) {
m_worker = new boost::asio::io_context();
- m_worker_io_service_work = new boost::asio::io_context::work(*m_worker);
+ m_worker_io_service_work = new boost::asio::executor_work_guard<boost::asio::io_context::executor_type>(m_worker->get_executor());
for (uint64_t i = 0; i < m_worker_thread_num; i++) {
std::thread* thd = new std::thread([this](){m_worker->run();});
m_worker_threads.push_back(thd);
});
if (m_worker_thread_num != 0) {
- m_worker->post([process_reply]() {
+ boost::asio::post(*m_worker, [process_reply]() {
process_reply->complete(true);
});
} else {
#define CEPH_CACHE_CACHE_CLIENT_H
#include <atomic>
+#include <boost/asio/executor_work_guard.hpp>
#include <boost/asio/io_context.hpp>
#include <boost/asio/local/stream_protocol.hpp>
#include <boost/algorithm/string.hpp>
private:
CephContext* m_cct;
boost::asio::io_context m_io_service;
- boost::asio::io_context::work m_io_service_work;
+ boost::asio::executor_work_guard<boost::asio::io_context::executor_type> m_io_service_work;
stream_protocol::socket m_dm_socket;
stream_protocol::endpoint m_ep;
std::shared_ptr<std::thread> m_io_thread;
uint64_t m_worker_thread_num;
boost::asio::io_context* m_worker;
std::vector<std::thread*> m_worker_threads;
- boost::asio::io_context::work* m_worker_io_service_work;
+ boost::asio::executor_work_guard<boost::asio::io_context::executor_type>* m_worker_io_service_work;
std::atomic<bool> m_writing;
std::atomic<bool> m_reading;
return ret;
}
- boost::system::error_code ec;
- ret = m_io_service.run(ec);
- if (ec) {
- ldout(cct, 1) << "m_io_service run fails: " << ec.message() << dendl;
+ try {
+ ret = m_io_service.run();
+ } catch (const std::exception& e) {
+ ldout(cct, 1) << "m_io_service run fails: " << e.what() << dendl;
return -1;
}
return 0;
return -ec.value();
}
- m_acceptor.listen(boost::asio::socket_base::max_connections, ec);
+ m_acceptor.listen(boost::asio::socket_base::max_listen_connections, ec);
if (ec) {
lderr(cct) << "failed to listen on domain socket: " << ec.message()
<< dendl;