1 // =================================
 2 // Copyright (c) 2024 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 using System;
 7 using System.IO;
 8 using System.Net.Sockets;
 9 
10 namespace System.Xml
11 {
12     [nodiscard]
13     public Result<bool> SendDocument(TcpSocket& socketDocument* document)
14     {
15         StringWriter writer;
16         System.Text.CodeFormatter formatter(writer);
17         formatter.SetIndentSize(1);
18         auto writeResult = document->Write(formatter);
19         if (writeResult.Error())
20         {
21             return Result<bool>(ErrorId(writeResult.GetErrorId()));
22         }
23         string s = writer.GetString();
24         auto sendResult = SendString(sockets);
25         if (sendResult.Error())
26         {
27             return Result<bool>(ErrorId(sendResult.GetErrorId()));
28         }
29         return Result<bool>(true);
30     }
31 
32     [nodiscard]
33     public Result<UniquePtr<Document>> ReceiveDocument(TcpSocket& socketSystem.Lex.FileMap& fileMapint& documentCount)
34     {
35         auto receiveResult = ReceiveString(socket);
36         if (receiveResult.Error())
37         {
38             return Result<UniquePtr<Document>>(ErrorId(receiveResult.GetErrorId()));
39         }
40         string s = Rvalue(receiveResult.Value());
41         string systemId = "socket." + ToString(documentCount++);
42         return ParseXmlDocumentContent(ssystemIdfileMap);
43     }