1e3cb5a31SEd Tanous #pragma once 2e3cb5a31SEd Tanous 3c0a1c8a0SIwona Klimaszewska #include <functional> 4c0a1c8a0SIwona Klimaszewska 5e3cb5a31SEd Tanous namespace bmcweb 6e3cb5a31SEd Tanous { 7e3cb5a31SEd Tanous 8e3cb5a31SEd Tanous /** 9e3cb5a31SEd Tanous * AsyncResp 10e3cb5a31SEd Tanous * Gathers data needed for response processing after async calls are done 11e3cb5a31SEd Tanous */ 12c0a1c8a0SIwona Klimaszewska 13e3cb5a31SEd Tanous class AsyncResp 14e3cb5a31SEd Tanous { 15e3cb5a31SEd Tanous public: 16e3cb5a31SEd Tanous AsyncResp(crow::Response& response) : res(response) 171214b7e7SGunnar Mills {} 18e3cb5a31SEd Tanous 19c0a1c8a0SIwona Klimaszewska AsyncResp(crow::Response& response, std::function<void()>&& function) : 20c0a1c8a0SIwona Klimaszewska res(response), func(std::move(function)) 211214b7e7SGunnar Mills {} 22c0a1c8a0SIwona Klimaszewska 23*dab0604aSKrzysztof Grobelny AsyncResp(const AsyncResp&) = delete; 24*dab0604aSKrzysztof Grobelny AsyncResp(AsyncResp&&) = delete; 25*dab0604aSKrzysztof Grobelny 26e3cb5a31SEd Tanous ~AsyncResp() 27e3cb5a31SEd Tanous { 28c0a1c8a0SIwona Klimaszewska if (func && res.result() == boost::beast::http::status::ok) 29c0a1c8a0SIwona Klimaszewska { 30c0a1c8a0SIwona Klimaszewska func(); 31c0a1c8a0SIwona Klimaszewska } 32c0a1c8a0SIwona Klimaszewska 33e3cb5a31SEd Tanous res.end(); 34e3cb5a31SEd Tanous } 35e3cb5a31SEd Tanous 36e3cb5a31SEd Tanous crow::Response& res; 3723a21a1cSEd Tanous std::function<void()> func; 38e3cb5a31SEd Tanous }; 39e3cb5a31SEd Tanous 40e3cb5a31SEd Tanous } // namespace bmcweb 41