public TrackingStream(Stream source, IStreamNotification notification) { _mSourceStream = source; _mNotification = notification; _mThreadId = notification.GetThreadId(); }
private static Stream[] CreatePipeline(List <ConfigPair> pipelineConfig, IList <Stream> fileStreams, bool isBackup, IStreamNotification streamNotification, long estimatedTotalBytes) { streamNotification.EstimatedBytes = estimatedTotalBytes; List <Stream> result = new List <Stream>(fileStreams.Count); foreach (Stream fileStream in fileStreams) { Stream topStream = fileStream; if (!isBackup) { topStream = new TrackingStream(topStream, streamNotification); } for (int i = pipelineConfig.Count - 1; i >= 0; i--) { ConfigPair config = pipelineConfig[i]; IBackupTransformer tran = config.TransformationType.GetConstructor(new Type[0]).Invoke(new object[0]) as IBackupTransformer; if (tran == null) { throw new ArgumentException(string.Format("Unable to create pipe component: {0}", config.TransformationType.Name)); } topStream = isBackup ? tran.GetBackupWriter(config.Parameters, topStream) : tran.GetRestoreReader(config.Parameters, topStream); } if (isBackup) { topStream = new TrackingStream(topStream, streamNotification); } result.Add(topStream); } return(result.ToArray()); }