//
// PacketSerializerProvider.cs
//
// Copyright (c) František Boháček. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System;
using System.Collections.Generic;
using NosCore.Packets;
namespace NosSmooth.Core.Packets;
///
/// Provides serializer for the server or client packets.
///
public class PacketSerializerProvider
{
private readonly List _clientPacketTypes;
private readonly List _serverPacketTypes;
private IPacketSerializer? _serverSerializer;
private IPacketSerializer? _clientSerializer;
///
/// Initializes a new instance of the class.
///
/// The types of client packets.
/// The types of server packets.
public PacketSerializerProvider(List clientPacketTypes, List serverPacketTypes)
{
_clientPacketTypes = clientPacketTypes;
_serverPacketTypes = serverPacketTypes;
}
///
/// Gets the server serializer.
///
public IPacketSerializer ServerSerializer
{
get
{
if (_serverSerializer is null)
{
_serverSerializer =
new PacketSerializer(new Serializer(_serverPacketTypes), new Deserializer(_serverPacketTypes));
}
return _serverSerializer;
}
}
///
/// Gets the client serializer.
///
public IPacketSerializer ClientSerializer
{
get
{
if (_clientSerializer is null)
{
_clientSerializer =
new PacketSerializer(new Serializer(_clientPacketTypes), new Deserializer(_clientPacketTypes));
}
return _clientSerializer;
}
}
}