From be158c8e4e56a2eb79900fe44c87b9b0c92af4b5 Mon Sep 17 00:00:00 2001 From: codeboss <2422523675@qq.com> Date: Sat, 16 Nov 2024 13:11:57 +0800 Subject: [PATCH] init --- PenetrateBasic/PenetrateBasic.vcxproj | 4 +++- PenetrateBasic/PenetrateBasic.vcxproj.filters | 6 +++++ PenetrateBasic/data_types.h | 22 ++++++++++++------- PenetrateBasic/msgs_types.cpp | 12 ++++++++++ PenetrateBasic/msgs_types.h | 10 +++++++++ 5 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 PenetrateBasic/msgs_types.cpp create mode 100644 PenetrateBasic/msgs_types.h diff --git a/PenetrateBasic/PenetrateBasic.vcxproj b/PenetrateBasic/PenetrateBasic.vcxproj index 253f6dc..37024de 100644 --- a/PenetrateBasic/PenetrateBasic.vcxproj +++ b/PenetrateBasic/PenetrateBasic.vcxproj @@ -37,7 +37,7 @@ 5.12.11_msvc2017_64 - core + core;network debug @@ -94,12 +94,14 @@ + + diff --git a/PenetrateBasic/PenetrateBasic.vcxproj.filters b/PenetrateBasic/PenetrateBasic.vcxproj.filters index b76a98c..a7a99b8 100644 --- a/PenetrateBasic/PenetrateBasic.vcxproj.filters +++ b/PenetrateBasic/PenetrateBasic.vcxproj.filters @@ -29,6 +29,9 @@ Source Files + + Source Files + @@ -43,5 +46,8 @@ Header Files + + Header Files + \ No newline at end of file diff --git a/PenetrateBasic/data_types.h b/PenetrateBasic/data_types.h index c6ca2fb..309b411 100644 --- a/PenetrateBasic/data_types.h +++ b/PenetrateBasic/data_types.h @@ -9,29 +9,35 @@ namespace datas { public: virtual ~IDataObject() = default; + virtual bool isValid() const = 0; virtual bool isArray() const = 0; - - virtual bool getBool(const QString& key) = 0; - virtual double getDouble(const QString& key) = 0; - virtual int32_t getInt32(const QString& key) = 0; - virtual int64_t getInt64(const QString& key) = 0; - virtual QString getString(const QString& key) = 0; - virtual IDataObject getObject(const QString& key) = 0; virtual IDataArray toArray() = 0; + virtual bool getBool(const QString& key) const = 0; + virtual double getDouble(const QString& key) const = 0; + virtual int32_t getInt32(const QString& key) const = 0; + virtual int64_t getInt64(const QString& key) const = 0; + virtual QString getString(const QString& key) const = 0; + virtual IDataObject getObject(const QString& key) const = 0; + virtual void setBool(const QString& key, bool value) = 0; virtual void setDouble(const QString& key, double value) = 0; virtual void setInt32(const QString& key, int32_t value) = 0; virtual void setInt64(const QString& key, int64_t value) = 0; virtual void setString(const QString& key, const QString& value) = 0; virtual void setObject(const QString& key, IDataObject value) = 0; + + virtual QString toText() const = 0; + virtual void loadFrom(const QString &text) = 0; }; class IDataArray : public IDataObject { public: virtual ~IDataArray() = default; + virtual bool isValid() const = 0; + virtual int32_t size() const = 0; - virtual IDataObject get(int index) = 0; + virtual IDataObject get(int index) const = 0; virtual void insert(int index, IDataObject value) = 0; virtual void append(IDataObject value) = 0; }; diff --git a/PenetrateBasic/msgs_types.cpp b/PenetrateBasic/msgs_types.cpp new file mode 100644 index 0000000..06a7353 --- /dev/null +++ b/PenetrateBasic/msgs_types.cpp @@ -0,0 +1,12 @@ +#include "msgs_types.h" + +using namespace msgs; + +QByteArray getMessage(const datas::IDataObject& obj) { + auto content = obj.toText().toUtf8(); + auto header = QString(u8"Content-Length:%1\n").arg(content.length()); + + auto u8_content = header.toUtf8(); + u8_content.append(content); + return u8_content; +} diff --git a/PenetrateBasic/msgs_types.h b/PenetrateBasic/msgs_types.h new file mode 100644 index 0000000..04ed2b4 --- /dev/null +++ b/PenetrateBasic/msgs_types.h @@ -0,0 +1,10 @@ +#pragma once + +#include +#include "data_types.h" + +namespace msgs { + QByteArray getMessage(const datas::IDataObject &obj); + + +}