1e3cb5a31SEd Tanous #pragma once 2e3cb5a31SEd Tanous 3*c0a1c8a0SIwona Klimaszewska #include <functional> 4*c0a1c8a0SIwona 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 */ 12*c0a1c8a0SIwona Klimaszewska 13e3cb5a31SEd Tanous class AsyncResp 14e3cb5a31SEd Tanous { 15e3cb5a31SEd Tanous public: 16e3cb5a31SEd Tanous AsyncResp(crow::Response& response) : res(response) 17e3cb5a31SEd Tanous { 18e3cb5a31SEd Tanous } 19e3cb5a31SEd Tanous 20*c0a1c8a0SIwona Klimaszewska AsyncResp(crow::Response& response, std::function<void()>&& function) : 21*c0a1c8a0SIwona Klimaszewska res(response), func(std::move(function)) 22*c0a1c8a0SIwona Klimaszewska { 23*c0a1c8a0SIwona Klimaszewska } 24*c0a1c8a0SIwona Klimaszewska 25e3cb5a31SEd Tanous ~AsyncResp() 26e3cb5a31SEd Tanous { 27*c0a1c8a0SIwona Klimaszewska if (func && res.result() == boost::beast::http::status::ok) 28*c0a1c8a0SIwona Klimaszewska { 29*c0a1c8a0SIwona Klimaszewska func(); 30*c0a1c8a0SIwona Klimaszewska } 31*c0a1c8a0SIwona Klimaszewska 32e3cb5a31SEd Tanous res.end(); 33e3cb5a31SEd Tanous } 34e3cb5a31SEd Tanous 35e3cb5a31SEd Tanous crow::Response& res; 36*c0a1c8a0SIwona Klimaszewska std::function<void()> func = 0; 37e3cb5a31SEd Tanous }; 38e3cb5a31SEd Tanous 39e3cb5a31SEd Tanous } // namespace bmcweb 40