Skip to content

Commit 382c37d

Browse files
afifi-insmconnew
authored andcommitted
Update Async Message
1 parent cb2c244 commit 382c37d

File tree

1 file changed

+10
-40
lines changed
  • src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels

1 file changed

+10
-40
lines changed

src/System.ServiceModel.Primitives/src/System/ServiceModel/Channels/Message.cs

Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -731,7 +731,7 @@ public virtual async Task OnWriteMessageAsync(XmlDictionaryWriter writer)
731731
// otherwise EnsureWriteMessageState would get called twice. Also see OnWriteMessage()
732732
// for the example.
733733
await OnWriteBodyContentsAsync(writer);
734-
WriteMessagePostamble(writer);
734+
await WriteMessagePostambleAsync(writer);
735735
}
736736

737737
private void EnsureWriteMessageState(XmlDictionaryWriter writer)
@@ -811,6 +811,15 @@ internal void WriteMessagePostamble(XmlDictionaryWriter writer)
811811
}
812812
}
813813

814+
internal async Task WriteMessagePostambleAsync(XmlDictionaryWriter writer)
815+
{
816+
if (Version.Envelope != EnvelopeVersion.None)
817+
{
818+
await writer.WriteEndElementAsync();
819+
await writer.WriteEndElementAsync();
820+
}
821+
}
822+
814823
protected virtual IAsyncResult OnBeginWriteMessage(XmlDictionaryWriter writer, AsyncCallback callback, object state)
815824
{
816825
return new OnWriteMessageAsyncResult(writer, this, callback, state);
@@ -1222,45 +1231,6 @@ protected override void OnBodyToString(XmlDictionaryWriter writer)
12221231
}
12231232

12241233
protected internal BodyWriter BodyWriter { get; private set; }
1225-
1226-
private class OnWriteMessageAsyncResult : AsyncResult
1227-
{
1228-
private BodyWriterMessage _message;
1229-
private XmlDictionaryWriter _writer;
1230-
1231-
public OnWriteMessageAsyncResult(XmlDictionaryWriter writer, BodyWriterMessage message, AsyncCallback callback, object state)
1232-
: base(callback, state)
1233-
{
1234-
_message = message;
1235-
_writer = writer;
1236-
1237-
if (HandleWriteBodyContents(null))
1238-
{
1239-
Complete(true);
1240-
}
1241-
}
1242-
1243-
private bool HandleWriteBodyContents(IAsyncResult result)
1244-
{
1245-
if (result == null)
1246-
{
1247-
result = _message.OnBeginWriteBodyContents(_writer, PrepareAsyncCompletion(HandleWriteBodyContents), this);
1248-
if (!result.CompletedSynchronously)
1249-
{
1250-
return false;
1251-
}
1252-
}
1253-
1254-
_message.OnEndWriteBodyContents(result);
1255-
_message.WriteMessagePostamble(_writer);
1256-
return true;
1257-
}
1258-
1259-
public static void End(IAsyncResult result)
1260-
{
1261-
AsyncResult.End<OnWriteMessageAsyncResult>(result);
1262-
}
1263-
}
12641234
}
12651235

12661236
internal abstract class ReceivedMessage : Message

0 commit comments

Comments
 (0)