Пример #1
0
        protected override void ProcessRecord()
        {
            foreach (AcmaPSObject obj in this.ExportObjects)
            {
                try
                {
                    obj.Hologram.PreLoadAVPs();
                    CSEntryChangeXmlExport.ExportToXml(obj.Hologram, writer);
                    MAStatistics.AddImportOperation();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error exporting object {0}: {1}: {2}", this.currentObjectCount, obj.Hologram.ObjectID, ex.Message);
                }

                //progress.PercentComplete = Convert.ToInt32(((decimal)this.currentObjectCount / this.totalObjectCount) * 100);
                progress.StatusDescription = string.Format("Importing {0}/{1}... {2} ({3} objects/sec)", this.currentObjectCount, this.totalObjectCount, obj.Hologram.ObjectID, this.sampleOpsSec);
                progress.CurrentOperation  = string.Format("Average rate: {0} objects/sec", this.averageOpsSec);
                progress.SecondsRemaining  = this.secondsRemaining;

                this.WriteProgress(progress);

                this.currentObjectCount++;

                obj.Dispose();
            }
        }
Пример #2
0
        private void ProduceCSEntryChanges(ResultEnumerator results, Schema schema, CachedImportRequest request)
        {
            ParallelOptions op = new ParallelOptions();

            op.CancellationToken      = new CancellationToken();
            request.CancellationToken = op.CancellationToken;
            op.MaxDegreeOfParallelism = 1;

            Parallel.ForEach(results, op, item =>
            {
                if (op.CancellationToken.IsCancellationRequested)
                {
                    return;
                }

                string objectClassName = item.ObjectClass == null ? item.DeltaObjectClassName : item.ObjectClass.Name;
                SchemaType type        = schema.Types.FirstOrDefault(t => t.Name == objectClassName);

                if (type == null)
                {
                    return;
                }

                CSEntryChange csentry = null;

                try
                {
                    csentry = item.ToCSEntryChange(type);
                    MAStatistics.AddImportOperation();
                }
                catch (Exception ex)
                {
                    MAStatistics.AddImportError();

                    if (csentry == null)
                    {
                        csentry = CSEntryChange.Create();
                    }

                    if (string.IsNullOrWhiteSpace(csentry.DN))
                    {
                        csentry.ErrorCodeImport = MAImportError.ImportErrorCustomStopRun;
                    }
                    else
                    {
                        csentry.ErrorCodeImport = MAImportError.ImportErrorCustomContinueRun;
                    }

                    csentry.ErrorName   = ex.Message;
                    csentry.ErrorDetail = ex.StackTrace;
                }

                request.Queue.Enqueue(csentry);
            });

            request.ProducerComplete = true;
        }