void Awake() { transform.tag = Tags.CLASSIFICATION_GAME_MANAGER; classificationUIManager = GameObject.FindGameObjectWithTag(Tags.CLASSIFICATION_UI_MANAGER).GetComponent <ClassificationUIManager> (); instructionSoundManager = GameObject.FindGameObjectWithTag(Tags.INSTRUCTIONS_SOUND_MANAGER).GetComponent <InstructionSoundManager> (); soundManager = GameObject.FindGameObjectWithTag(Tags.SOUND_MANAGER).GetComponent <SoundManager> (); notificationManager = GameObject.FindGameObjectWithTag(Tags.NOTIFICATION_MANAGER).GetComponent <IdleCheck> (); if (classificationUIManager == null) { Debug.LogError("CLASSIFICATION_UI_MANAGER IS NULL !!"); } GenerateQuestions(); selectedSprites = new List <Actor> (); }
// Use this for initialization void Awake() { quizUIManager = GameObject.FindGameObjectWithTag(Tags.QUIZ_UI_MANAGER).GetComponent <QuizUIManager> (); instructionSoundManager = GameObject.FindGameObjectWithTag(Tags.INSTRUCTIONS_SOUND_MANAGER).GetComponent <InstructionSoundManager> (); soundManager = GameObject.FindGameObjectWithTag(Tags.SOUND_MANAGER).GetComponent <SoundManager> (); notificationManager = GameObject.FindGameObjectWithTag(Tags.NOTIFICATION_MANAGER).GetComponent <IdleCheck> (); if (quizUIManager == null) { Debug.LogError("QUIZ_UI_MANAGER IS NULL !!"); } GenerateQuestions(); if (questions.Length == 0) { Debug.LogError("QUESTIONS QUEUE IS EMPTY !!"); } }
/// <summary> /// Initializes a new instance of the <see cref="FtpConnection"/> class. /// </summary> /// <param name="socketAccessor">The accessor to get the socket used to communicate with the client.</param> /// <param name="options">The options for the FTP connection.</param> /// <param name="portOptions">The <c>PORT</c> command options.</param> /// <param name="connectionAccessor">The accessor to get the connection that is active during the <see cref="FtpCommandHandler.Process"/> method execution.</param> /// <param name="catalogLoader">The catalog loader for the FTP server.</param> /// <param name="serverCommandExecutor">The executor for server commands.</param> /// <param name="serviceProvider">The service provider for the connection.</param> /// <param name="secureDataConnectionWrapper">Wraps a data connection into an SSL stream.</param> /// <param name="sslStreamWrapperFactory">The SSL stream wrapper factory.</param> /// <param name="logger">The logger for the FTP connection.</param> /// <param name="loggerFactory">The logger factory.</param> public FtpConnection( TcpSocketClientAccessor socketAccessor, IOptions <FtpConnectionOptions> options, IOptions <PortCommandOptions> portOptions, IFtpConnectionAccessor connectionAccessor, IFtpCatalogLoader catalogLoader, IServerCommandExecutor serverCommandExecutor, IServiceProvider serviceProvider, SecureDataConnectionWrapper secureDataConnectionWrapper, ISslStreamWrapperFactory sslStreamWrapperFactory, ILogger <FtpConnection>?logger = null, ILoggerFactory?loggerFactory = null) { var socket = socketAccessor.TcpSocketClient ?? throw new InvalidOperationException("The socket to communicate with the client was not set"); ConnectionServices = serviceProvider; ConnectionId = "FTP-" + Guid.NewGuid().ToString("N"); _dataPort = portOptions.Value.DataPort; #pragma warning disable 612 _keepAlive = new FtpConnectionKeepAlive(this); #pragma warning restore 612 _idleCheck = new IdleCheck(this); var remoteEndPoint = _remoteEndPoint = (IPEndPoint)socket.Client.RemoteEndPoint; #pragma warning disable 618 RemoteAddress = new Address(remoteEndPoint.Address.ToString(), remoteEndPoint.Port); #pragma warning restore 618 var properties = new Dictionary <string, object?> { ["RemoteAddress"] = remoteEndPoint.ToString(), ["RemoteIp"] = remoteEndPoint.Address.ToString(), ["RemotePort"] = remoteEndPoint.Port, ["ConnectionId"] = ConnectionId, }; _loggerScope = logger?.BeginScope(properties); _socket = socket; _connectionAccessor = connectionAccessor; _serverCommandExecutor = serverCommandExecutor; _secureDataConnectionWrapper = secureDataConnectionWrapper; _serverCommandChannel = Channel.CreateBounded <IServerCommand>(new BoundedChannelOptions(3)); _logger = logger; var parentFeatures = new FeatureCollection(); var connectionFeature = new ConnectionFeature( (IPEndPoint)socket.Client.LocalEndPoint, remoteEndPoint); var secureConnectionFeature = new SecureConnectionFeature(); var applicationInputPipe = new Pipe(); var applicationOutputPipe = new Pipe(); var socketPipe = new DuplexPipe(_socketCommandPipe.Reader, _socketResponsePipe.Writer); var connectionPipe = new DuplexPipe(applicationOutputPipe.Reader, applicationInputPipe.Writer); var originalStream = socketAccessor.TcpSocketStream ?? socket.GetStream(); _streamReaderService = new ConnectionClosingNetworkStreamReader( originalStream, _socketCommandPipe.Writer, _cancellationTokenSource, loggerFactory?.CreateLogger($"{typeof(StreamPipeWriterService).FullName}.Socket.Receive")); _streamWriterService = new StreamPipeWriterService( originalStream, _socketResponsePipe.Reader, _cancellationTokenSource.Token, loggerFactory?.CreateLogger($"{typeof(StreamPipeWriterService).FullName}.Socket.Transmit")); _networkStreamFeature = new NetworkStreamFeature( new SecureConnectionAdapter( socketPipe, connectionPipe, sslStreamWrapperFactory, _cancellationTokenSource.Token, loggerFactory), applicationOutputPipe.Writer); parentFeatures.Set <IConnectionFeature>(connectionFeature); parentFeatures.Set <ISecureConnectionFeature>(secureConnectionFeature); parentFeatures.Set <IServerCommandFeature>(new ServerCommandFeature(_serverCommandChannel)); parentFeatures.Set <INetworkStreamFeature>(_networkStreamFeature); parentFeatures.Set <IFtpConnectionEventHost>(this); parentFeatures.Set <IFtpConnectionStatusCheck>(_idleCheck); #pragma warning disable 618 #pragma warning disable 612 parentFeatures.Set <IFtpConnectionKeepAlive>(_keepAlive); #pragma warning restore 612 #pragma warning restore 618 var features = new FeatureCollection(parentFeatures); #pragma warning disable 618 Data = new FtpConnectionData( options.Value.DefaultEncoding ?? Encoding.ASCII, features, catalogLoader); #pragma warning restore 618 Features = features; _authorizationInformationFeature = features.Get <IAuthorizationInformationFeature>(); _commandReader = ReadCommandsFromPipeline( applicationInputPipe.Reader, _ftpCommandChannel.Writer, _cancellationTokenSource.Token); }
private void Start() { Instance = this; }