Program Listing for File fetch_asset.hpp¶
↰ Return to documentation for file (foxglove/include/foxglove/server/fetch_asset.hpp)
#pragma once
#include <functional>
#include <memory>
#include <string_view>
#include <vector>
struct foxglove_fetch_asset_responder;
namespace foxglove {
class FetchAssetResponder final {
public:
void respondOk(const std::byte* data, size_t size) && noexcept;
void respondOk(const std::vector<std::byte>& data) && noexcept {
std::move(*this).respondOk(data.data(), data.size());
};
void respondError(std::string_view message) && noexcept;
~FetchAssetResponder() = default;
FetchAssetResponder(FetchAssetResponder&&) noexcept = default;
FetchAssetResponder& operator=(FetchAssetResponder&&) noexcept = default;
FetchAssetResponder(const FetchAssetResponder&) = delete;
FetchAssetResponder& operator=(const FetchAssetResponder&) = delete;
private:
friend class WebSocketServer;
struct Deleter {
void operator()(foxglove_fetch_asset_responder* ptr) const noexcept;
};
std::unique_ptr<foxglove_fetch_asset_responder, Deleter> impl_;
explicit FetchAssetResponder(foxglove_fetch_asset_responder* ptr)
: impl_(ptr) {}
};
using FetchAssetHandler =
std::function<void(std::string_view uri, FetchAssetResponder&& responder)>;
} // namespace foxglove