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);
+
+
+}