bmcweb: Remove deprecatd ASIO interfaces

boost::asio::io_service is removed in leiu of io_context, which is a
closer match to the networking TS.  Move us to that implementatio.

This was an automated move using the following command:
git grep -l 'io_service' | xargs sed -i 's/io_service/io_context/g'

Change-Id: I46605521c01f79f86f6901ddf69ddc8c4bc24103
Signed-off-by: Ed Tanous <ed.tanous@intel.com>
diff --git a/README.md b/README.md
index 77ac92e..e5e8ca1 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,7 @@
 + Move most uses of std::unordered_map to boost::flat_map to lower memory consumption, and (in some cases) to improve memory locality.
 + Adjust the addHeaders mechanism to use a fixed string instead of a full map implementation to avoid unnecessary mallocs and reduce the number of scatter gather buffers on an http response.
 + Change server name header from Crow/0.1 to iBMC
-+ Starts the http server io_service inside the main thread, instead of creating a new thread.
++ Starts the http server io_context inside the main thread, instead of creating a new thread.
 + Removes all BMCWEB_MSVC_WORKAROUND flags.
 + Removes the behavior that causes a 301 redirect for paths that end in "/", and simply returns the endpoint requested.  This was done for redfish compatibility.
 + Removes the built in crow/json.hpp package and adds nlohmann json package as the first class json package for crow.
diff --git a/crow/include/crow/app.h b/crow/include/crow/app.h
index 428705d..9a2281a 100644
--- a/crow/include/crow/app.h
+++ b/crow/include/crow/app.h
@@ -36,8 +36,8 @@
     using server_t = Server<Crow, socket_t, Middlewares...>;
 
 #endif
-    explicit Crow(std::shared_ptr<boost::asio::io_service> io =
-                      std::make_shared<boost::asio::io_service>()) :
+    explicit Crow(std::shared_ptr<boost::asio::io_context> io =
+                      std::make_shared<boost::asio::io_context>()) :
         io(std::move(io))
     {
     }
@@ -225,7 +225,7 @@
     }
 
   private:
-    std::shared_ptr<asio::io_service> io;
+    std::shared_ptr<asio::io_context> io;
 #ifdef BMCWEB_ENABLE_SSL
     uint16_t portUint = 443;
 #else
diff --git a/crow/include/crow/http_connection.h b/crow/include/crow/http_connection.h
index 51bc9fe..297648e 100644
--- a/crow/include/crow/http_connection.h
+++ b/crow/include/crow/http_connection.h
@@ -4,7 +4,7 @@
 #include <atomic>
 #include <boost/algorithm/string.hpp>
 #include <boost/algorithm/string/predicate.hpp>
-#include <boost/asio/io_service.hpp>
+#include <boost/asio/io_context.hpp>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/beast/core/flat_static_buffer.hpp>
 #include <boost/beast/http.hpp>
@@ -247,7 +247,7 @@
 class Connection
 {
   public:
-    Connection(boost::asio::io_service& ioService, Handler* handler,
+    Connection(boost::asio::io_context& ioService, Handler* handler,
                const std::string& server_name,
                std::tuple<Middlewares...>* middlewares,
                std::function<std::string()>& get_cached_date_str_f,
diff --git a/crow/include/crow/http_request.h b/crow/include/crow/http_request.h
index e66ad4b..ac5f78d 100644
--- a/crow/include/crow/http_request.h
+++ b/crow/include/crow/http_request.h
@@ -1,6 +1,6 @@
 #pragma once
 
-#include <boost/asio/io_service.hpp>
+#include <boost/asio/io_context.hpp>
 #include <boost/beast/http.hpp>
 #include <boost/beast/websocket.hpp>
 
@@ -19,7 +19,7 @@
     const std::string& body;
 
     void* middlewareContext{};
-    boost::asio::io_service* ioService{};
+    boost::asio::io_context* ioService{};
 
     Request(boost::beast::http::request<boost::beast::http::string_body>& req) :
         req(req), body(req.body())
diff --git a/crow/include/crow/http_server.h b/crow/include/crow/http_server.h
index d8fedf3..ebf5570 100644
--- a/crow/include/crow/http_server.h
+++ b/crow/include/crow/http_server.h
@@ -32,8 +32,8 @@
     Server(Handler* handler, std::unique_ptr<tcp::acceptor>&& acceptor,
            std::tuple<Middlewares...>* middlewares = nullptr,
            typename Adaptor::context* adaptor_ctx = nullptr,
-           std::shared_ptr<boost::asio::io_service> io =
-               std::make_shared<boost::asio::io_service>()) :
+           std::shared_ptr<boost::asio::io_context> io =
+               std::make_shared<boost::asio::io_context>()) :
         ioService(std::move(io)),
         acceptor(std::move(acceptor)), signals(*ioService, SIGINT, SIGTERM),
         tickTimer(*ioService), handler(handler), middlewares(middlewares),
@@ -44,8 +44,8 @@
     Server(Handler* handler, const std::string& bindaddr, uint16_t port,
            std::tuple<Middlewares...>* middlewares = nullptr,
            typename Adaptor::context* adaptor_ctx = nullptr,
-           std::shared_ptr<boost::asio::io_service> io =
-               std::make_shared<boost::asio::io_service>()) :
+           std::shared_ptr<boost::asio::io_context> io =
+               std::make_shared<boost::asio::io_context>()) :
         Server(handler,
                std::make_unique<tcp::acceptor>(
                    *io,
@@ -58,8 +58,8 @@
     Server(Handler* handler, int existing_socket,
            std::tuple<Middlewares...>* middlewares = nullptr,
            typename Adaptor::context* adaptor_ctx = nullptr,
-           std::shared_ptr<boost::asio::io_service> io =
-               std::make_shared<boost::asio::io_service>()) :
+           std::shared_ptr<boost::asio::io_context> io =
+               std::make_shared<boost::asio::io_context>()) :
         Server(handler,
                std::make_unique<tcp::acceptor>(*io, boost::asio::ip::tcp::v6(),
                                                existing_socket),
@@ -181,7 +181,7 @@
     }
 
   private:
-    std::shared_ptr<asio::io_service> ioService;
+    std::shared_ptr<asio::io_context> ioService;
     detail::TimerQueue timerQueue;
     std::function<std::string()> getCachedDateStr;
     std::unique_ptr<tcp::acceptor> acceptor;
diff --git a/crow/include/crow/socket_adaptors.h b/crow/include/crow/socket_adaptors.h
index a47697f..16ebe1f 100644
--- a/crow/include/crow/socket_adaptors.h
+++ b/crow/include/crow/socket_adaptors.h
@@ -17,14 +17,14 @@
     using streamType = tcp::socket;
     using secure = std::false_type;
     using context = void;
-    SocketAdaptor(boost::asio::io_service& ioService, context* /*unused*/) :
+    SocketAdaptor(boost::asio::io_context& ioService, context* /*unused*/) :
         socketCls(ioService)
     {
     }
 
-    boost::asio::io_service& getIoService()
+    boost::asio::io_context& getIoService()
     {
-        return socketCls.get_io_service();
+        return socketCls.get_io_context();
     }
 
     tcp::socket& rawSocket()
@@ -71,14 +71,14 @@
 {
     using secure = std::false_type;
     using context = void;
-    TestSocketAdaptor(boost::asio::io_service& ioService, context* /*unused*/) :
+    TestSocketAdaptor(boost::asio::io_context& ioService, context* /*unused*/) :
         socketCls(ioService)
     {
     }
 
-    boost::asio::io_service& getIoService()
+    boost::asio::io_context& getIoService()
     {
-        return socketCls.get_io_service();
+        return socketCls.get_io_context();
     }
 
     tcp::socket& rawSocket()
@@ -121,7 +121,7 @@
     using secure = std::true_type;
     using context = boost::asio::ssl::context;
     using ssl_socket_t = boost::asio::ssl::stream<tcp::socket>;
-    SSLAdaptor(boost::asio::io_service& ioService, context* ctx) :
+    SSLAdaptor(boost::asio::io_context& ioService, context* ctx) :
         sslSocket(new ssl_socket_t(ioService, *ctx))
     {
     }
@@ -182,9 +182,9 @@
         this->sslSocket->lowest_layer().close();
     }
 
-    boost::asio::io_service& getIoService()
+    boost::asio::io_context& getIoService()
     {
-        return rawSocket().get_io_service();
+        return rawSocket().get_io_context();
     }
 
     template <typename F> void start(F f)
diff --git a/crow/include/crow/websocket.h b/crow/include/crow/websocket.h
index 1596b8d..c435d33 100644
--- a/crow/include/crow/websocket.h
+++ b/crow/include/crow/websocket.h
@@ -27,7 +27,7 @@
     virtual void sendText(const boost::beast::string_view msg) = 0;
     virtual void sendText(std::string&& msg) = 0;
     virtual void close(const boost::beast::string_view msg = "quit") = 0;
-    virtual boost::asio::io_service& getIoService() = 0;
+    virtual boost::asio::io_context& getIoService() = 0;
     virtual ~Connection() = default;
 
     void userdata(void* u)
@@ -65,7 +65,7 @@
         BMCWEB_LOG_DEBUG << "Creating new connection " << this;
     }
 
-    boost::asio::io_service& getIoService() override
+    boost::asio::io_context& getIoService() override
     {
         return adaptor.getIoService();
     }
diff --git a/include/ast_video_puller.hpp b/include/ast_video_puller.hpp
index 520fc68..c97ca48 100644
--- a/include/ast_video_puller.hpp
+++ b/include/ast_video_puller.hpp
@@ -141,7 +141,7 @@
   public:
     using video_callback = std::function<void(RawVideoBuffer &)>;
 
-    explicit AsyncVideoPuller(boost::asio::io_service &ioService) :
+    explicit AsyncVideoPuller(boost::asio::io_context &ioService) :
         imageInfo(), devVideo(ioService, open("/dev/video", O_RDWR))
     {
         videobuf = std::make_shared<RawVideoBuffer>();
diff --git a/src/crow_test.cpp b/src/crow_test.cpp
index 96b90b0..beefdee 100644
--- a/src/crow_test.cpp
+++ b/src/crow_test.cpp
@@ -398,7 +398,7 @@
     Server<SimpleApp> server(&app, LOCALHOST_ADDRESS, 45451);
     auto _ = async(launch::async, [&] { server.run(); });
     std::string sendmsg = "POX";
-    asio::io_service is;
+    asio::io_context is;
     {
         asio::ip::tcp::socket c(is);
         c.connect(asio::ip::tcp::endpoint(
@@ -436,7 +436,7 @@
 
     std::string sendmsg =
         "POST /\r\nContent-Length:3\r\nX-HeaderTest: 123\r\n\r\nA=b\r\n";
-    asio::io_service is;
+    asio::io_context is;
     {
         asio::ip::tcp::socket c(is);
         c.connect(asio::ip::tcp::endpoint(
@@ -645,7 +645,7 @@
     decltype(app)::server_t server(&app, LOCALHOST_ADDRESS, 45451);
     auto _ = async(launch::async, [&] { server.run(); });
     std::string sendmsg = "GET /\r\n\r\n";
-    asio::io_service is;
+    asio::io_context is;
     {
         asio::ip::tcp::socket c(is);
         c.connect(asio::ip::tcp::endpoint(
@@ -701,7 +701,7 @@
     decltype(app)::server_t server(&app, LOCALHOST_ADDRESS, 45451);
     auto _ = async(launch::async, [&] { server.run(); });
     std::string sendmsg = "GET / HTTP/1.1\r\nHost: localhost\r\n\r\n";
-    asio::io_service is;
+    asio::io_context is;
     {
         std::vector<std::future<void>> v;
         for (int i = 0; i < 5; i++)
@@ -744,7 +744,7 @@
 
     decltype(app)::server_t server(&app, LOCALHOST_ADDRESS, 45451);
     auto _ = async(launch::async, [&] { server.run(); });
-    asio::io_service is;
+    asio::io_context is;
     std::string sendmsg;
 
     // check empty params
diff --git a/src/kvm_websocket_test.cpp b/src/kvm_websocket_test.cpp
index 1ddaad9..40470a9 100644
--- a/src/kvm_websocket_test.cpp
+++ b/src/kvm_websocket_test.cpp
@@ -24,7 +24,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(std::launch::async, [&] { app.run(); });
     auto routes = app.getRoutes();
-    asio::io_service is;
+    asio::io_context is;
 
     {
         // Retry a couple of times waiting for the server to come up
diff --git a/src/security_headers_middleware_test.cpp b/src/security_headers_middleware_test.cpp
index 2af15c6..4fa3003 100644
--- a/src/security_headers_middleware_test.cpp
+++ b/src/security_headers_middleware_test.cpp
@@ -16,7 +16,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(launch::async, [&] { app.run(); });
 
-    asio::io_service is;
+    asio::io_context is;
     std::array<char, 2048> buf;
     std::string sendmsg;
 
diff --git a/src/token_authorization_middleware_test.cpp b/src/token_authorization_middleware_test.cpp
index 812a6d1..8f4c5c8 100644
--- a/src/token_authorization_middleware_test.cpp
+++ b/src/token_authorization_middleware_test.cpp
@@ -15,14 +15,14 @@
   public:
     TokenAuth() :
         lk(std::unique_lock<std::mutex>(m)),
-        io(std::make_shared<boost::asio::io_service>())
+        io(std::make_shared<boost::asio::io_context>())
     {
     }
 
     std::mutex m;
     std::condition_variable cv;
     std::unique_lock<std::mutex> lk;
-    std::shared_ptr<boost::asio::io_service> io;
+    std::shared_ptr<boost::asio::io_context> io;
     int testPort = 45451;
 };
 
@@ -38,7 +38,7 @@
         io->run();
     });
 
-    asio::io_service is;
+    asio::io_context is;
     std::string sendmsg;
 
     static char buf[2048];
@@ -80,7 +80,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(std::launch::async, [&] { app.run(); });
 
-    asio::io_service is;
+    asio::io_context is;
     static char buf[2048];
 
     // Other resources should not be passed
@@ -116,7 +116,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(std::launch::async, [&] { app.run(); });
 
-    asio::io_service is;
+    asio::io_context is;
     static char buf[2048];
 
     // Other resources should not be passed
@@ -152,7 +152,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(std::launch::async, [&] { app.run(); });
 
-    asio::io_service is;
+    asio::io_context is;
     std::array<char, 2048> buf;
     std::string sendmsg;
 
@@ -244,7 +244,7 @@
     BMCWEB_ROUTE(app, "/")([]() { return boost::beast::http::status::ok; });
     auto _ = async(std::launch::async, [&] { app.run(); });
 
-    asio::io_service is;
+    asio::io_context is;
     std::array<char, 2048> buf;
     std::string sendmsg;
 
diff --git a/src/webassets_test.cpp b/src/webassets_test.cpp
index a3106f2..3df7542 100644
--- a/src/webassets_test.cpp
+++ b/src/webassets_test.cpp
@@ -25,7 +25,7 @@
     // get the homepage
     std::string sendmsg = "GET /\r\n\r\n";
 
-    asio::io_service is;
+    asio::io_context is;
 
     asio::ip::tcp::socket c(is);
     c.connect(asio::ip::tcp::endpoint(
@@ -100,7 +100,7 @@
     // get the homepage
     std::string sendmsg = "GET /\r\n\r\n";
 
-    asio::io_service is;
+    asio::io_context is;
 
     asio::ip::tcp::socket c(is);
     c.connect(asio::ip::tcp::endpoint(
diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp
index b4d36ef..7c64f4c 100644
--- a/src/webserver_main.cpp
+++ b/src/webserver_main.cpp
@@ -1,7 +1,7 @@
 #include <crow/app.h>
 #include <systemd/sd-daemon.h>
 
-#include <boost/asio/io_service.hpp>
+#include <boost/asio/io_context.hpp>
 #include <dbus_monitor.hpp>
 #include <dbus_singleton.hpp>
 #include <image_upload.hpp>
@@ -57,7 +57,7 @@
 {
     crow::logger::setLogLevel(crow::LogLevel::DEBUG);
 
-    auto io = std::make_shared<boost::asio::io_service>();
+    auto io = std::make_shared<boost::asio::io_context>();
     CrowApp app(io);
 
 #ifdef BMCWEB_ENABLE_SSL