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) 17*1214b7e7SGunnar Mills {} 18e3cb5a31SEd Tanous 19c0a1c8a0SIwona Klimaszewska AsyncResp(crow::Response& response, std::function<void()>&& function) : 20c0a1c8a0SIwona Klimaszewska res(response), func(std::move(function)) 21*1214b7e7SGunnar Mills {} 22c0a1c8a0SIwona Klimaszewska 23e3cb5a31SEd Tanous ~AsyncResp() 24e3cb5a31SEd Tanous { 25c0a1c8a0SIwona Klimaszewska if (func && res.result() == boost::beast::http::status::ok) 26c0a1c8a0SIwona Klimaszewska { 27c0a1c8a0SIwona Klimaszewska func(); 28c0a1c8a0SIwona Klimaszewska } 29c0a1c8a0SIwona Klimaszewska 30e3cb5a31SEd Tanous res.end(); 31e3cb5a31SEd Tanous } 32e3cb5a31SEd Tanous 33e3cb5a31SEd Tanous crow::Response& res; 34c0a1c8a0SIwona Klimaszewska std::function<void()> func = 0; 35e3cb5a31SEd Tanous }; 36e3cb5a31SEd Tanous 37e3cb5a31SEd Tanous } // namespace bmcweb 38