Remove getIoContext from Request object

At one point it was thought that we could pass the io_context object
through the request object, and have the potential to run multiple
io_context instances (one per connection).

Given the safety refactoring we had to do in
9838eb20341568971b9543c2187372d20daf64aa that idea is on ice for the
moment, and would need a major rethink of code to be viable.  For the
moment, and in prep for
https://gerrit.openbmc.org/c/openbmc/bmcweb/+/75668

make sure all calls are pulling from the same io object.

Tested: Unit tests pass.  Redfish service validator passes.

Change-Id: I877752005c4ce94efbc13ce815f3cd0d99cc3d51
Signed-off-by: Ed Tanous <etanous@nvidia.com>
diff --git a/include/image_upload.hpp b/include/image_upload.hpp
index 914b3e8..f6a0dfc 100644
--- a/include/image_upload.hpp
+++ b/include/image_upload.hpp
@@ -7,6 +7,7 @@
 #include "dbus_singleton.hpp"
 #include "dbus_utility.hpp"
 #include "http_request.hpp"
+#include "io_context_singleton.hpp"
 #include "logging.hpp"
 #include "ossl_random.hpp"
 
@@ -46,14 +47,8 @@
         asyncResp->res.result(boost::beast::http::status::service_unavailable);
         return;
     }
-    if (req.ioService == nullptr)
-    {
-        asyncResp->res.result(
-            boost::beast::http::status::internal_server_error);
-        return;
-    }
     // Make this const static so it survives outside this method
-    static boost::asio::steady_timer timeout(*req.ioService,
+    static boost::asio::steady_timer timeout(getIoContext(),
                                              std::chrono::seconds(5));
 
     timeout.expires_after(std::chrono::seconds(15));
diff --git a/include/kvm_websocket.hpp b/include/kvm_websocket.hpp
index 3e0e09e..adf4c5e 100644
--- a/include/kvm_websocket.hpp
+++ b/include/kvm_websocket.hpp
@@ -2,6 +2,7 @@
 // SPDX-FileCopyrightText: Copyright OpenBMC Authors
 #pragma once
 #include "app.hpp"
+#include "io_context_singleton.hpp"
 #include "logging.hpp"
 #include "websocket.hpp"
 
@@ -29,7 +30,7 @@
 {
   public:
     explicit KvmSession(crow::websocket::Connection& connIn) :
-        conn(connIn), hostSocket(conn.getIoContext())
+        conn(connIn), hostSocket(getIoContext())
     {
         boost::asio::ip::tcp::endpoint endpoint(
             boost::asio::ip::make_address("127.0.0.1"), 5900);
diff --git a/include/obmc_console.hpp b/include/obmc_console.hpp
index e9c2b15..e94b6a9 100644
--- a/include/obmc_console.hpp
+++ b/include/obmc_console.hpp
@@ -4,6 +4,7 @@
 #include "app.hpp"
 #include "dbus_singleton.hpp"
 #include "dbus_utility.hpp"
+#include "io_context_singleton.hpp"
 #include "logging.hpp"
 #include "websocket.hpp"
 
@@ -286,7 +287,7 @@
     }
 
     std::shared_ptr<ConsoleHandler> handler =
-        std::make_shared<ConsoleHandler>(conn.getIoContext(), conn);
+        std::make_shared<ConsoleHandler>(getIoContext(), conn);
     getConsoleHandlerMap().emplace(&conn, handler);
 
     conn.deferRead();
diff --git a/include/vm_websocket.hpp b/include/vm_websocket.hpp
index 424cb80..95cb982 100644
--- a/include/vm_websocket.hpp
+++ b/include/vm_websocket.hpp
@@ -7,6 +7,7 @@
 #include "app.hpp"
 #include "dbus_singleton.hpp"
 #include "dbus_utility.hpp"
+#include "io_context_singleton.hpp"
 #include "logging.hpp"
 #include "websocket.hpp"
 
@@ -205,8 +206,8 @@
                    const std::string& endpointIdIn, const std::string& pathIn) :
         socketId(socketIdIn), endpointId(endpointIdIn), path(pathIn),
 
-        peerSocket(connIn.getIoContext()),
-        acceptor(connIn.getIoContext(), stream_protocol::endpoint(socketId)),
+        peerSocket(getIoContext()),
+        acceptor(getIoContext(), stream_protocol::endpoint(socketId)),
         connection(connIn)
     {}
 
@@ -585,7 +586,7 @@
                 // media is the last digit of the endpoint /vm/0/0. A future
                 // enhancement can include supporting different endpoint values.
                 const char* media = "0";
-                handler = std::make_shared<Handler>(media, conn.getIoContext());
+                handler = std::make_shared<Handler>(media, getIoContext());
                 handler->connect();
             })
             .onclose([](crow::websocket::Connection& conn,