Skip to content

Commit 4fcc475

Browse files
committed
Implement UnpackToCore for StringBuilder.
1 parent 97107ea commit 4fcc475

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

src/MsgPack/Serialization/DefaultSerializers/System_Text_StringBuilderMessagePackSerializer.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,16 @@ protected internal override StringBuilder UnpackFromCore( Unpacker unpacker )
4949
return result.IsNil ? null : new StringBuilder( result.DeserializeAsString() );
5050
}
5151

52+
protected internal override void UnpackToCore( Unpacker unpacker, StringBuilder collection )
53+
{
54+
// NOTE: More efficient?
55+
var result = unpacker.LastReadData;
56+
if ( !result.IsNil )
57+
{
58+
collection.Append( result.DeserializeAsString() );
59+
}
60+
}
61+
5262
#if FEATURE_TAP
5363

5464
protected internal override Task PackToAsyncCore( Packer packer, StringBuilder objectTree, CancellationToken cancellationToken )
@@ -73,6 +83,28 @@ protected internal override Task<StringBuilder> UnpackFromAsyncCore( Unpacker un
7383
return tcs.Task;
7484
}
7585

86+
protected internal override Task UnpackToAsyncCore( Unpacker unpacker, StringBuilder collection, CancellationToken cancellationToken )
87+
{
88+
// NOTE: More efficient?
89+
var tcs = new TaskCompletionSource<object>();
90+
try
91+
{
92+
var result = unpacker.LastReadData;
93+
if ( !result.IsNil )
94+
{
95+
collection.Append( result.DeserializeAsString() );
96+
}
97+
98+
tcs.SetResult( null );
99+
}
100+
catch ( Exception ex )
101+
{
102+
tcs.SetException( ex );
103+
}
104+
105+
return tcs.Task;
106+
}
107+
76108
#endif // FEATURE_TAP
77109
}
78110
}

0 commit comments

Comments
 (0)