aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/model/GpgData.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/model/GpgData.h')
-rw-r--r--src/core/model/GpgData.h67
1 files changed, 54 insertions, 13 deletions
diff --git a/src/core/model/GpgData.h b/src/core/model/GpgData.h
index 816465d3..358ebd19 100644
--- a/src/core/model/GpgData.h
+++ b/src/core/model/GpgData.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2021 Saturneric
+ * Copyright (C) 2021 Saturneric <[email protected]>
*
* This file is part of GpgFrontend.
*
@@ -20,23 +20,27 @@
* the gpg4usb project, which is under GPL-3.0-or-later.
*
* All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
+ * Saturneric <[email protected]> starting on May 12, 2021.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
*/
-#ifndef _GPGDATA_H
-#define _GPGDATA_H
+#pragma once
-#include "core/GpgConstants.h"
+#include "core/GpgFrontendCoreExport.h"
+#include "core/model/GFBuffer.h"
+#include "core/typedef/CoreTypedef.h"
namespace GpgFrontend {
+
+class GFDataExchanger;
+
/**
* @brief
*
*/
-class GpgData {
+class GPGFRONTEND_CORE_EXPORT GpgData {
public:
/**
* @brief Construct a new Gpg Data object
@@ -51,7 +55,40 @@ class GpgData {
* @param size
* @param copy
*/
- GpgData(void* buffer, size_t size, bool copy = true);
+ GpgData(const void* buffer, size_t size, bool copy = true);
+
+ /**
+ * @brief Construct a new Gpg Data object
+ *
+ * @param fd
+ */
+ explicit GpgData(int fd);
+
+ /**
+ * @brief Construct a new Gpg Data object
+ *
+ * @param fd
+ */
+ explicit GpgData(std::shared_ptr<GFDataExchanger>);
+
+ /**
+ * @brief Construct a new Gpg Data object
+ *
+ * @param path
+ */
+ explicit GpgData(const QString& path, bool read);
+
+ /**
+ * @brief Construct a new Gpg Data object
+ *
+ */
+ explicit GpgData(GFBuffer);
+
+ /**
+ * @brief Destroy the Gpg Data object
+ *
+ */
+ ~GpgData();
/**
* @brief
@@ -65,23 +102,27 @@ class GpgData {
*
* @return ByteArrayPtr
*/
- ByteArrayPtr Read2Buffer();
+ auto Read2GFBuffer() -> GFBuffer;
private:
/**
* @brief
*
*/
- struct _data_ref_deleter {
+ struct DataRefDeleter {
void operator()(gpgme_data_t _data) {
if (_data != nullptr) gpgme_data_release(_data);
}
};
- std::unique_ptr<struct gpgme_data, _data_ref_deleter> data_ref_ =
- nullptr; ///<
+ GFBuffer cached_buffer_;
+
+ std::unique_ptr<struct gpgme_data, DataRefDeleter> data_ref_ = nullptr; ///<
+ FILE* fp_ = nullptr;
+ int fd_ = -1;
+
+ struct gpgme_data_cbs data_cbs_;
+ std::shared_ptr<GFDataExchanger> data_ex_;
};
} // namespace GpgFrontend
-
-#endif // _GPGDATA_H \ No newline at end of file