// // 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; } } }