webview_data_stream_memory.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // This file is part of Desktop App Toolkit,
  2. // a set of libraries for developing nice desktop applications.
  3. //
  4. // For license and copyright information please follow this link:
  5. // https://github.com/desktop-app/legal/blob/master/LEGAL
  6. //
  7. #pragma once
  8. #include "base/basic_types.h"
  9. #include "webview/webview_data_stream.h"
  10. #include <QtCore/QByteArray>
  11. namespace Webview {
  12. class DataStreamFromMemory final : public DataStream {
  13. public:
  14. DataStreamFromMemory(QByteArray data, std::string mime);
  15. ~DataStreamFromMemory();
  16. DataStreamFromMemory(const DataStreamFromMemory &other) = delete;
  17. DataStreamFromMemory &operator=(const DataStreamFromMemory &other) = delete;
  18. DataStreamFromMemory(DataStreamFromMemory &&other) = delete;
  19. DataStreamFromMemory &operator=(DataStreamFromMemory &&other) = delete;
  20. [[nodiscard]] int handle() override;
  21. [[nodiscard]] std::int64_t size() override;
  22. [[nodiscard]] std::string mime() override;
  23. std::int64_t seek(int origin, std::int64_t position) override;
  24. std::int64_t read(void *buffer, std::int64_t requested) override;
  25. [[nodiscard]] const char *bytes() const {
  26. return _data.data();
  27. }
  28. private:
  29. int _handle = -1;
  30. QByteArray _data;
  31. std::string _mime;
  32. int64 _offset = 0;
  33. };
  34. } // namespace Webview