Statistics
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;
using Relativity.DataExchange;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Runtime.CompilerServices;
namespace kCura.WinEDDS
{
public class Statistics
{
public const string BatchSizeKey = "BatchSize";
public const string BatchCountKey = "Batches";
public const string DocsCountKey = "Docs";
public const string MetadataBytesKey = "MetadataBytes";
public const string MetadataFilesTransferredKey = "MetadataFilesTransferred";
public const string MetadataThroughputKey = "MetadataThroughput";
public const string MetadataTimeKey = "MetadataTime";
public const string NativeFileBytesKey = "NativeFileBytes";
public const string NativeFileThroughputKey = "NativeFileThroughput";
public const string NativeFileTimeKey = "NativeFileTime";
public const string NativeFilesTransferredKey = "NativeFilesTransferred";
public const string DocsErrorsCountKey = "DocsErrorsCount";
public const string FileTransferRateKey = "Average file transfer rate";
public const string MetadataTransferRateKey = "Average metadata transfer rate";
public const string SqlProcessRateKey = "Average SQL process rate";
public const string CurrentBatchSizeKey = "Current batch size";
[CompilerGenerated]
private int _BatchCount;
[CompilerGenerated]
private int _BatchSize;
[CompilerGenerated]
private int _DocsErrorsCount;
[CompilerGenerated]
private int _MetadataFilesTransferredCount;
[CompilerGenerated]
private long _MetadataTransferredBytes;
[CompilerGenerated]
private TimeSpan _MetadataTransferDuration;
[CompilerGenerated]
private TimeSpan _MetadataWaitDuration;
[CompilerGenerated]
private double _MetadataTransferThroughput;
[CompilerGenerated]
private int _NativeFilesTransferredCount;
[CompilerGenerated]
private long _FileTransferredBytes;
[CompilerGenerated]
private TimeSpan _FileTransferDuration;
[CompilerGenerated]
private TimeSpan _FileWaitDuration;
[CompilerGenerated]
private double _FileTransferThroughput;
[CompilerGenerated]
private TimeSpan _MassImportDuration;
[CompilerGenerated]
private int _DocumentsCount;
public int BatchCount { get; set; }
public int BatchSize { get; set; }
public int DocsErrorsCount { get; set; }
public int MetadataFilesTransferredCount { get; set; }
public long MetadataTransferredBytes { get; set; }
public TimeSpan MetadataTransferDuration { get; set; }
public TimeSpan MetadataWaitDuration { get; set; }
public double MetadataTransferThroughput { get; set; }
public int NativeFilesTransferredCount { get; set; }
public long FileTransferredBytes { get; set; }
public TimeSpan FileTransferDuration { get; set; }
public TimeSpan FileWaitDuration { get; set; }
public double FileTransferThroughput { get; set; }
public TimeSpan MassImportDuration { get; set; }
public int DocumentsCount { get; set; }
public Statistics()
{
BatchCount = 0;
BatchSize = 0;
DocsErrorsCount = 0;
MetadataFilesTransferredCount = 0;
MetadataTransferredBytes = 0;
MetadataTransferDuration = default(TimeSpan);
MetadataWaitDuration = default(TimeSpan);
MetadataTransferThroughput = 0;
NativeFilesTransferredCount = 0;
FileTransferredBytes = 0;
FileTransferDuration = default(TimeSpan);
FileWaitDuration = default(TimeSpan);
FileTransferThroughput = 0;
MassImportDuration = default(TimeSpan);
DocumentsCount = 0;
}
public static double CalculateThroughput(long size, double timeSeconds)
{
return Conversions.ToDouble(Interaction.IIf(timeSeconds.Equals(0), 0, (double)size / timeSeconds));
}
internal static string ToFileSizeSpecification(double value)
{
return ByteSize.FromBytes(value).ToString("0.##");
}
public virtual double GetSqlProcessRate()
{
return 0;
}
public virtual IDictionary ToDictionaryForProgress()
{
HybridDictionary hybridDictionary = new HybridDictionary();
TimeSpan timeSpan = FileTransferDuration;
if (!timeSpan.Equals(TimeSpan.Zero)) {
TimeSpan t = FileTransferDuration - FileWaitDuration;
if (t <= TimeSpan.Zero)
t = FileTransferDuration;
hybridDictionary.Add("Average file transfer rate", ToFileSizeSpecification((double)FileTransferredBytes / t.TotalSeconds) + "/sec");
}
timeSpan = MetadataTransferDuration;
if (!timeSpan.Equals(TimeSpan.Zero)) {
TimeSpan t2 = MetadataTransferDuration - MetadataWaitDuration;
if (t2 <= TimeSpan.Zero)
t2 = MetadataTransferDuration;
hybridDictionary.Add("Average metadata transfer rate", ToFileSizeSpecification((double)MetadataTransferredBytes / t2.TotalSeconds) + "/sec");
}
timeSpan = MassImportDuration;
if (!timeSpan.Equals(TimeSpan.Zero)) {
HybridDictionary hybridDictionary2 = hybridDictionary;
double num = (double)DocumentsCount;
timeSpan = MassImportDuration;
hybridDictionary2.Add("Average SQL process rate", (num / timeSpan.TotalSeconds).ToString("N0") + " Documents/sec");
}
if (BatchSize != 0)
hybridDictionary.Add("Current batch size", BatchSize.ToString("N0"));
return hybridDictionary;
}
public virtual IDictionary<string, object> ToDictionaryForLogs()
{
return new Dictionary<string, object> {
{
"DocsErrorsCount",
DocsErrorsCount
},
{
"BatchSize",
BatchSize
},
{
"Batches",
BatchCount
},
{
"Docs",
DocumentsCount
},
{
"MetadataBytes",
MetadataTransferredBytes
},
{
"MetadataFilesTransferred",
MetadataFilesTransferredCount
},
{
"MetadataThroughput",
MetadataTransferThroughput
},
{
"MetadataTime",
MetadataTransferDuration
},
{
"NativeFileBytes",
FileTransferredBytes
},
{
"NativeFileThroughput",
FileTransferThroughput
},
{
"NativeFileTime",
FileTransferDuration
},
{
"NativeFilesTransferred",
NativeFilesTransferredCount
}
};
}
}
}