using System.Collections; using System.Collections.Generic; using UnityEngine; using System; namespace BF { public class SocketManager : ManagerBase { static SocketManager instance; private SocketChannelManager socketChannelManager; private readonly bool isLittleEndian; private SocketManager() { isLittleEndian = BitConverter.IsLittleEndian; } public static SocketManager Create() { BFLog.LogAssert(instance == null, "This method only allows BFMain to call once"); instance = new SocketManager(); instance.Init(); return instance; } public override void Init() { socketChannelManager = new SocketChannelManager(); } public override void Update() { socketChannelManager.Update(Time.time, Time.realtimeSinceStartup); } public ISocketChannel TryGetSocketClient(string channelName) { return socketChannelManager.TryGetSocketChannel(channelName); } public void CreateSocketClient(string channelName, Action callback) { var sch = new SocketChannelHelper(isLittleEndian); socketChannelManager.CreateSocketChannel(channelName, sch, callback); } public bool DestroySocketChannel(string channelName) { return socketChannelManager.DestroySocketChannel(channelName); } public void Shutdown() { } public override void Destroy() { socketChannelManager.Shutdown(); socketChannelManager = null; } } }