Example #1
0
        public async Task <IMessageSink> GetMessageSinkAsync()
        {
            if (this.MessageSink == DefaultMessageSinkProvider.NullMessageSink)
            {
                var gettingProgramName = this.ProgramNameProvider.GetProgramNameAsync();
                var gettingMessagesOutputDirectoryPath = this.ProgramStartTimeSpecificMessagesOutputDirectoryPathProvider.GetProgramStartTimeSpecificMessagesOutputDirectoryPathAsync();

                await Task.WhenAll(gettingProgramName, gettingMessagesOutputDirectoryPath);

                var fileName = this.FileNameOperator.GetFileName(gettingProgramName.Result, Constants.OutputFileExtension);

                var messagesOutputFilePath = this.StringlyTypedPathOperator.Combine(gettingMessagesOutputDirectoryPath.Result, fileName);

                this.MessageSink = CompositeMessageSink.NewDefault(this.MessageFormatter, this.StringlyTypedPathOperator, messagesOutputFilePath);
            }

            return(this.MessageSink);
        }