private void OnDeserializedCallback(StreamingContext context)
        {
            // Constructors and field initializers are not called by DCS, so initialize things here
            progressUpdateLock             = new ReaderWriterLockSlim();
            lockEnumerateContinuationToken = new object();
            EnumerationWaitTimeOut         = TimeSpan.FromSeconds(10);

            if (!IsStreamJournal)
            {
                this.subTransfers = this.serializeSubTransfers;
            }
            else
            {
                this.subTransfers = new TransferCollection <SingleObjectTransfer>();
            }

            this.subTransfers.OverallProgressTracker.Parent = this.ProgressTracker;

            // DataContractSerializer doesn't invoke object's constructor, we should initialize member variables here.
            shouldTransferQueue
                = new TaskQueue <Tuple <SingleObjectTransfer, TransferEntry> >(TransferManager.Configurations.ParallelOperations * Constants.ListSegmentLengthMultiplier);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="MultipleObjectsTransfer"/> class.
 /// </summary>
 /// <param name="source">Transfer source.</param>
 /// <param name="dest">Transfer destination.</param>
 /// <param name="transferMethod">Transfer method, see <see cref="TransferMethod"/> for detail available methods.</param>
 public MultipleObjectsTransfer(TransferLocation source, TransferLocation dest, TransferMethod transferMethod)
     : base(source, dest, transferMethod)
 {
     this.subTransfers = new TransferCollection <SingleObjectTransfer>();
     this.subTransfers.OverallProgressTracker.Parent = this.ProgressTracker;
 }