コード例 #1
0
ファイル: IgnoranceNG.cs プロジェクト: MirageNet/IgnoranceNG
        /// <summary>
        ///     Start listening for incoming connection attempts.
        /// </summary>
        /// <returns>Returns completed if started up correctly.</returns>
        public override UniTask ListenAsync()
        {
            try
            {
                if (!_enetInitialized)
                {
                    if (InitializeEnet())
                    {
                        Debug.Log("Ignorance successfully initialized ENET.");
                        _enetInitialized = true;
                    }
                    else
                    {
                        Debug.LogError("Ignorance failed to initialize ENET! Cannot continue.");
                        return(UniTask.CompletedTask);
                    }
                }

                _server = new IgnoranceServer(Config, this);

                // start server up and listen for connections
                _server.Start();

                _listenCompletionSource = AutoResetUniTaskCompletionSource.Create();

                return(_listenCompletionSource.Task);
            }
            catch (Exception ex)
            {
                return(UniTask.FromException(ex));
            }
        }
コード例 #2
0
ファイル: IgnoranceNG.cs プロジェクト: MirageNet/IgnoranceNG
        /// <summary>
        ///     Shutdown the transport and disconnect server and clients.
        /// </summary>
        public override void Disconnect()
        {
            Config.PacketCache = new byte[Config.MaxPacketSizeInKb * 1024];

            _listenCompletionSource?.TrySetResult();

            _enetInitialized = false;

            _server?.Shutdown();
            _server = null;

            Library.Deinitialize();
        }