1- using System ;
1+ using Quick . Protocol ;
2+ using System ;
23using System . Collections . Generic ;
34using System . IO ;
5+ using System . IO . Compression ;
46using System . Linq ;
57using System . Text ;
8+ using System . Text . Json ;
69
710namespace 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}
0 commit comments