public ProcessDataSender(JsonSerializer serialiser, ProcessConfiguration configuration)
        {
            if (serialiser == null)
            {
                throw new ArgumentNullException(nameof(serialiser));
            }

            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            this.serialiser    = serialiser;
            this.configuration = configuration;
        }
        public ProcessStream(ProcessConfiguration config, IOutputStreamFactory outputFactory)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            if (outputFactory == null)
            {
                throw new ArgumentNullException(nameof(outputFactory));
            }

            if (string.IsNullOrEmpty(config.FileName))
            {
                throw new ArgumentNullException("fileName", "Process filename must be supplied");
            }

            this.config        = config;
            this.outputFactory = outputFactory;
        }