Skip to content

Commit 4c2c784

Browse files
committed
调整qdb文件格式。
1 parent 9c38b42 commit 4c2c784

File tree

9 files changed

+87
-16
lines changed

9 files changed

+87
-16
lines changed

QpTestClient/MainForm.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using System.Reflection;
1313
using System.Resources;
1414
using System.Text;
15+
using System.Text.Json;
1516
using System.Threading.Tasks;
1617
using System.Windows.Forms;
1718

@@ -316,7 +317,7 @@ private async void BtnConnectConnection_Click(object sender, EventArgs e)
316317
scMain.Enabled = false;
317318
try
318319
{
319-
//var preConnectionInfoContent = Quick.Xml.XmlConvert.Serialize(connectionContext.ConnectionInfo);
320+
var preConnectionInfoContent = JsonSerializer.Serialize(connectionContext.ConnectionInfo, TestConnectionInfoSerializerContext.Default.TestConnectionInfo);
320321

321322
await connectionContext.Connect();
322323
connectionNode.ImageIndex = connectionNode.SelectedImageIndex = 1;
@@ -331,11 +332,9 @@ private async void BtnConnectConnection_Click(object sender, EventArgs e)
331332
displayInstructions(connectionNode, connectionContext.ConnectionInfo.Instructions);
332333
connectionNode.ExpandAll();
333334

334-
/*
335-
var currentConnectionInfoContent = Quick.Xml.XmlConvert.Serialize(connectionContext.ConnectionInfo);
335+
var currentConnectionInfoContent = JsonSerializer.Serialize(connectionContext.ConnectionInfo, TestConnectionInfoSerializerContext.Default.TestConnectionInfo);
336336
if (currentConnectionInfoContent != preConnectionInfoContent)
337337
QpdFileUtils.SaveQpbFile(connectionContext.ConnectionInfo);
338-
*/
339338
}
340339
catch (Exception ex)
341340
{

QpTestClient/TestConnectionInfo.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
using Quick.Protocol;
2+
using Quick.Protocol.SerialPort;
23
using System;
34
using System.Collections.Generic;
45
using System.Text;
6+
using System.Text.Json.Serialization;
57

68
namespace QpTestClient
79
{
10+
[JsonSerializable(typeof(TestConnectionInfo))]
11+
public partial class TestConnectionInfoSerializerContext : JsonSerializerContext { }
12+
813
public class TestConnectionInfo
914
{
1015
public string Name { get; set; }
1116
public string QpClientTypeName { get; set; }
12-
public QpClientOptions QpClientOptions { get; set; }
1317
public QpInstruction[] Instructions { get; set; }
18+
[JsonIgnore]
19+
public QpClientOptions QpClientOptions { get; set; }
1420
}
1521
}

QpTestClient/Utils/QpdFileUtils.cs

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
using System;
1+
using Quick.Protocol;
2+
using System;
23
using System.Collections.Generic;
34
using System.IO;
5+
using System.IO.Compression;
46
using System.Linq;
57
using System.Text;
8+
using System.Text.Json;
69

710
namespace QpTestClient.Utils
811
{
@@ -14,16 +17,24 @@ public class QpdFileUtils
1417

1518
public static void SaveQpbFile(TestConnectionInfo connectionInfo, string file = null)
1619
{
17-
/*
18-
var content = Quick.Xml.XmlConvert.Serialize(connectionInfo);
1920
if (!Directory.Exists(QpbFileFolder))
2021
Directory.CreateDirectory(QpbFileFolder);
2122
if (string.IsNullOrEmpty(file))
2223
file = GetQpbFilePath(connectionInfo);
2324
if (File.Exists(file))
2425
File.Delete(file);
25-
File.WriteAllText(file, content, Encoding.UTF8);
26-
*/
26+
27+
using (var zipArchive = ZipFile.Open(file, ZipArchiveMode.Create))
28+
{
29+
//写入连接信息
30+
var entry = zipArchive.CreateEntry(typeof(TestConnectionInfo).FullName);
31+
using (var stream = entry.Open())
32+
JsonSerializer.Serialize(stream, connectionInfo, TestConnectionInfoSerializerContext.Default.TestConnectionInfo);
33+
//写入客户端配置信息
34+
entry = zipArchive.CreateEntry(typeof(QpClientOptions).FullName);
35+
using (var stream = entry.Open())
36+
connectionInfo.QpClientOptions.Serialize(stream);
37+
}
2738
}
2839

2940
public static TestConnectionInfo[] GetConnectionInfosFromQpbFileFolder()
@@ -53,9 +64,34 @@ public static void DeleteQpbFile(TestConnectionInfo connectionInfo)
5364

5465
public static TestConnectionInfo Load(string file)
5566
{
56-
return null;
57-
//var content = File.ReadAllText(file);
58-
//return Quick.Xml.XmlConvert.Deserialize<TestConnectionInfo>(content);
67+
TestConnectionInfo testConnectionInfo = null;
68+
using (var zipArchive = ZipFile.OpenRead(file))
69+
{
70+
//读取连接信息
71+
var entry = zipArchive.GetEntry(typeof(TestConnectionInfo).FullName);
72+
using (var stream = entry.Open())
73+
testConnectionInfo = JsonSerializer.Deserialize(stream, TestConnectionInfoSerializerContext.Default.TestConnectionInfo);
74+
//读取客户端配置信息
75+
entry = zipArchive.GetEntry(typeof(QpClientOptions).FullName);
76+
using (var stream = entry.Open())
77+
{
78+
QpClientOptions options = null;
79+
if (testConnectionInfo.QpClientTypeName == typeof(Quick.Protocol.Tcp.QpTcpClient).FullName)
80+
options = JsonSerializer.Deserialize(stream,
81+
Quick.Protocol.Tcp.QpTcpClientOptionsSerializerContext.Default.QpTcpClientOptions);
82+
else if (testConnectionInfo.QpClientTypeName == typeof(Quick.Protocol.Pipeline.QpPipelineClient).FullName)
83+
options = JsonSerializer.Deserialize(stream,
84+
Quick.Protocol.Pipeline.QpPipelineClientOptionsSerializerContext.Default.QpPipelineClientOptions);
85+
else if (testConnectionInfo.QpClientTypeName == typeof(Quick.Protocol.SerialPort.QpSerialPortClient).FullName)
86+
options = JsonSerializer.Deserialize(stream,
87+
Quick.Protocol.SerialPort.QpSerialPortClientOptionsSerializerContext.Default.QpSerialPortClientOptions);
88+
else if (testConnectionInfo.QpClientTypeName == typeof(Quick.Protocol.WebSocket.Client.QpWebSocketClient).FullName)
89+
options = JsonSerializer.Deserialize(stream,
90+
Quick.Protocol.WebSocket.Client.QpWebSocketClientOptionsSerializerContext.Default.QpWebSocketClientOptions);
91+
testConnectionInfo.QpClientOptions = options;
92+
}
93+
}
94+
return testConnectionInfo;
5995
}
6096
}
6197
}

Quick.Protocol.Pipeline/QpPipelineClientOptions.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.IO;
34
using System.Text.Json;
45
using System.Text.Json.Serialization;
56

@@ -32,7 +33,7 @@ public override QpClient CreateClient()
3233

3334
protected override void LoadFromUri(Uri uri)
3435
{
35-
ServerName =uri.Host;
36+
ServerName = uri.Host;
3637
PipeName = uri.AbsolutePath.Replace("/", string.Empty);
3738
base.LoadFromUri(uri);
3839
}
@@ -55,5 +56,10 @@ public override QpClientOptions Clone()
5556
var json = JsonSerializer.Serialize(this, QpPipelineClientOptionsSerializerContext.Default.QpPipelineClientOptions);
5657
return JsonSerializer.Deserialize(json, QpPipelineClientOptionsSerializerContext.Default.QpPipelineClientOptions);
5758
}
59+
60+
public override void Serialize(Stream stream)
61+
{
62+
JsonSerializer.Serialize(stream, this, QpPipelineClientOptionsSerializerContext.Default.QpPipelineClientOptions);
63+
}
5864
}
5965
}

Quick.Protocol.SerialPort/QpSerialPortClientOptions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.ComponentModel;
4+
using System.IO;
45
using System.IO.Ports;
56
using System.Text.Json;
67
using System.Text.Json.Serialization;
@@ -102,5 +103,10 @@ public override QpClientOptions Clone()
102103
var json = JsonSerializer.Serialize(this, QpSerialPortClientOptionsSerializerContext.Default.QpSerialPortClientOptions);
103104
return JsonSerializer.Deserialize(json, QpSerialPortClientOptionsSerializerContext.Default.QpSerialPortClientOptions);
104105
}
106+
107+
public override void Serialize(Stream stream)
108+
{
109+
JsonSerializer.Serialize(stream, this, QpSerialPortClientOptionsSerializerContext.Default.QpSerialPortClientOptions);
110+
}
105111
}
106112
}

Quick.Protocol.Tcp/QpTcpClientOptions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.IO;
34
using System.Text.Json;
45
using System.Text.Json.Serialization;
56

@@ -84,5 +85,10 @@ public override QpClientOptions Clone()
8485
var json = JsonSerializer.Serialize(this, QpTcpClientOptionsSerializerContext.Default.QpTcpClientOptions);
8586
return JsonSerializer.Deserialize(json, QpTcpClientOptionsSerializerContext.Default.QpTcpClientOptions);
8687
}
88+
89+
public override void Serialize(Stream stream)
90+
{
91+
JsonSerializer.Serialize(stream, this, QpTcpClientOptionsSerializerContext.Default.QpTcpClientOptions);
92+
}
8793
}
8894
}

Quick.Protocol.WebSocket.Client/QpWebSocketClientOptions.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.ComponentModel;
4+
using System.IO;
45
using System.Text;
56
using System.Text.Json;
67
using System.Text.Json.Serialization;
@@ -56,11 +57,15 @@ public static void RegisterUriSchema()
5657
RegisterUriSchema(URI_SCHEMA_WSS, () => new QpWebSocketClientOptions());
5758
}
5859

59-
6060
public override QpClientOptions Clone()
6161
{
6262
var json = JsonSerializer.Serialize(this, QpWebSocketClientOptionsSerializerContext.Default.QpWebSocketClientOptions);
6363
return JsonSerializer.Deserialize(json, QpWebSocketClientOptionsSerializerContext.Default.QpWebSocketClientOptions);
6464
}
65+
66+
public override void Serialize(Stream stream)
67+
{
68+
JsonSerializer.Serialize(stream, this, QpWebSocketClientOptionsSerializerContext.Default.QpWebSocketClientOptions);
69+
}
6570
}
6671
}

Quick.Protocol/QpClientOptions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Collections.ObjectModel;
44
using System.ComponentModel;
5+
using System.IO;
56
using System.Reflection;
67
using System.Text;
78
using System.Text.Json;
@@ -118,7 +119,7 @@ public Uri ToUri(bool includePassword = false, bool includeOtherProperty = false
118119
HashSet<string> ignorePropertyNames = new HashSet<string>();
119120
ignorePropertyNames.Add(nameof(HeartBeatInterval));
120121
if (!includePassword)
121-
ignorePropertyNames.Add(nameof(Password));
122+
ignorePropertyNames.Add(nameof(Password));
122123
string baseUrl = ToUriBasic(ignorePropertyNames);
123124
if (includePassword || includeOtherProperty)
124125
{
@@ -170,5 +171,6 @@ public static QpClientOptions Parse(Uri uri)
170171
}
171172

172173
public abstract QpClientOptions Clone();
174+
public abstract void Serialize(Stream stream);
173175
}
174176
}

Quick.Protocol/Streams/QpStreamClientOptions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,10 @@ public override QpClientOptions Clone()
2929
{
3030
throw new System.NotImplementedException();
3131
}
32+
33+
public override void Serialize(Stream stream)
34+
{
35+
throw new System.NotImplementedException();
36+
}
3237
}
3338
}

0 commit comments

Comments
 (0)