-
-
Notifications
You must be signed in to change notification settings - Fork 206
/
JsonSerializable.cs
39 lines (33 loc) · 1.09 KB
/
JsonSerializable.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using Sentry.Extensibility;
namespace Sentry.Protocol.Envelopes;
/// <summary>
/// Represents an object serializable in JSON format.
/// </summary>
internal sealed class JsonSerializable : ISerializable
{
/// <summary>
/// Source object.
/// </summary>
public IJsonSerializable Source { get; }
/// <summary>
/// Initializes an instance of <see cref="JsonSerializable"/>.
/// </summary>
public JsonSerializable(IJsonSerializable source) => Source = source;
/// <inheritdoc />
public async Task SerializeAsync(Stream stream, IDiagnosticLogger? logger, CancellationToken cancellationToken = default)
{
var writer = new Utf8JsonWriter(stream);
await using (writer.ConfigureAwait(false))
{
Source.WriteTo(writer, logger);
await writer.FlushAsync(cancellationToken).ConfigureAwait(false);
}
}
/// <inheritdoc />
public void Serialize(Stream stream, IDiagnosticLogger? logger)
{
using var writer = new Utf8JsonWriter(stream);
Source.WriteTo(writer, logger);
writer.Flush();
}
}