Skip to content

Commit 90a6d29

Browse files
shmaoroncain
authored andcommitted
Merge pull request #435 from shmao/issue217
Use new Implemented Async Methods in System.Runtime.Serialization.Xml
1 parent 4bede2a commit 90a6d29

File tree

3 files changed

+12
-7
lines changed

3 files changed

+12
-7
lines changed

src/System.Private.ServiceModel/src/System/ServiceModel/Channels/TextMessageEncoder.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -547,8 +547,7 @@ public override async Task WriteMessageAsync(Message message, Stream stream)
547547
xmlWriter.WriteEndDocument();
548548
}
549549

550-
// The underlying type of xmlWriter, XmlUTF8TextWriter, has not implemented FlushAsync() yet.
551-
xmlWriter.Flush();
550+
await xmlWriter.FlushAsync();
552551
ReturnStreamedWriter(xmlWriter);
553552

554553
if (TD.StreamedMessageWrittenByEncoderIsEnabled())

src/System.Private.ServiceModel/src/System/ServiceModel/Dispatcher/OperationFormatter.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ public OperationFormatter(OperationDescription description, bool isRpc, bool isE
4646

4747
protected abstract void AddHeadersToMessage(Message message, MessageDescription messageDescription, object[] parameters, bool isRequest);
4848
protected abstract void SerializeBody(XmlDictionaryWriter writer, MessageVersion version, string action, MessageDescription messageDescription, object returnValue, object[] parameters, bool isRequest);
49+
protected virtual Task SerializeBodyAsync(XmlDictionaryWriter writer, MessageVersion version, string action, MessageDescription messageDescription, object returnValue, object[] parameters, bool isRequest)
50+
{
51+
SerializeBody(writer, version, action, messageDescription, returnValue, parameters, isRequest);
52+
return Task.CompletedTask;
53+
}
54+
4955
protected abstract void GetHeadersFromMessage(Message message, MessageDescription messageDescription, object[] parameters, bool isRequest);
5056
protected abstract object DeserializeBody(XmlDictionaryReader reader, MessageVersion version, string action, MessageDescription messageDescription, object[] parameters, bool isRequest);
5157

@@ -356,7 +362,7 @@ private async Task SerializeBodyContentsAsync(XmlDictionaryWriter writer, Messag
356362
return;
357363
}
358364

359-
SerializeBody(writer, version, RequestAction, messageDescription, returnValue, parameters, isRequest);
365+
await SerializeBodyAsync(writer, version, RequestAction, messageDescription, returnValue, parameters, isRequest);
360366
}
361367

362368
private IAsyncResult BeginSerializeBodyContents(XmlDictionaryWriter writer, MessageVersion version, object[] parameters, object returnValue, bool isRequest,

src/System.Private.ServiceModel/src/System/ServiceModel/Dispatcher/StreamFormatter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ private Stream GetStreamAndWriteStartWrapperIfNecessary(XmlDictionaryWriter writ
7373
return streamValue;
7474
}
7575

76-
private Task<Stream> GetStreamAndWriteStartWrapperIfNecessaryAsync(XmlDictionaryWriter writer, object[] parameters, object returnValue)
76+
private async Task<Stream> GetStreamAndWriteStartWrapperIfNecessaryAsync(XmlDictionaryWriter writer, object[] parameters, object returnValue)
7777
{
7878
Stream streamValue = GetStreamValue(parameters, returnValue);
7979
if (streamValue == null)
8080
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(_partName);
8181
if (WrapperName != null)
82-
writer.WriteStartElement(null, WrapperName, WrapperNamespace);
83-
writer.WriteStartElement(null, PartName, PartNamespace);
84-
return Task.FromResult(streamValue);
82+
await writer.WriteStartElementAsync(null, WrapperName, WrapperNamespace);
83+
await writer.WriteStartElementAsync(null, PartName, PartNamespace);
84+
return streamValue;
8585
}
8686

8787
private void WriteEndWrapperIfNecessary(XmlDictionaryWriter writer)

0 commit comments

Comments
 (0)