// Copyright (c) Arlo Godfrey. All Rights Reserved.
// Licensed under the GNU Lesser General Public License, Version 3.0 with additional terms.
// See the LICENSE, LICENSE.LESSER and LICENSE.ADDITIONAL files in the project root for more information.
using System;
using System.IO;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Newtonsoft.Json;
using OwlCore.Extensions;
using OwlCore.Services;
namespace StrixMusic.Sdk.Services
{
///
/// An and implementation for serializing and deserializing streams using System.Text.Json.
///
public class NewtonsoftStreamSerializer : IAsyncSerializer, ISerializer
{
///
/// A singleton instance for .
///
public static NewtonsoftStreamSerializer Singleton { get; } = new();
///
public Task SerializeAsync(T data, CancellationToken? cancellationToken = null) => Task.Run(() => Serialize(data), cancellationToken ?? CancellationToken.None);
///
public Task SerializeAsync(Type inputType, object data, CancellationToken? cancellationToken = null) => Task.Run(() => Serialize(inputType, data), cancellationToken ?? CancellationToken.None);
///
public Task DeserializeAsync(Stream serialized, CancellationToken? cancellationToken = null) => Task.Run(() => Deserialize(serialized), cancellationToken ?? CancellationToken.None);
///
public Task