//-----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation.
//
//-----------------------------------------------------------------------
namespace Microsoft.Isam.Esent.Interop
{
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Globalization;
using System.Text;
///
/// Information about one esent index. This is not an interop
/// class, but is used by the meta-data helper methods.
///
[Serializable]
public class IndexInfo
{
///
/// The name of the index.
///
private readonly string name;
///
/// The culture info of the index.
///
private readonly CultureInfo cultureInfo;
///
/// Index comparison options.
///
private readonly CompareOptions compareOptions;
///
/// Index segments.
///
private readonly ReadOnlyCollection indexSegments;
///
/// Index options.
///
private readonly CreateIndexGrbit grbit;
///
/// Number of unique keys in the index.
///
private readonly int keys;
///
/// Number of entries in the index.
///
private readonly int entries;
///
/// Number of pages in the index.
///
private readonly int pages;
///
/// Initializes a new instance of the IndexInfo class.
///
/// Name of the index.
/// CultureInfo for string sorting.
/// String comparison options.
/// Array of index segment descriptions.
/// Index options.
/// Number of unique keys in the index.
/// Number of entries in the index.
/// Number of pages in the index.
internal IndexInfo(
string name,
CultureInfo cultureInfo,
CompareOptions compareOptions,
IndexSegment[] indexSegments,
CreateIndexGrbit grbit,
int keys,
int entries,
int pages)
{
this.name = name;
this.cultureInfo = cultureInfo;
this.compareOptions = compareOptions;
this.indexSegments = new ReadOnlyCollection(indexSegments);
this.grbit = grbit;
this.keys = keys;
this.entries = entries;
this.pages = pages;
}
///
/// Gets the name of the index.
///
public string Name
{
[DebuggerStepThrough]
get { return this.name; }
}
///
/// Gets the CultureInfo the index is sorted by.
///
public CultureInfo CultureInfo
{
[DebuggerStepThrough]
get { return this.cultureInfo; }
}
///
/// Gets the CompareOptions for the index.
///
public CompareOptions CompareOptions
{
[DebuggerStepThrough]
get { return this.compareOptions; }
}
///
/// Gets the segments of the index.
///
public IList IndexSegments
{
[DebuggerStepThrough]
get { return this.indexSegments; }
}
///
/// Gets the index options.
///
public CreateIndexGrbit Grbit
{
[DebuggerStepThrough]
get { return this.grbit; }
}
///
/// Gets the number of unique keys in the index.
/// This value is not current and is only is updated by Api.JetComputeStats.
///
public int Keys
{
[DebuggerStepThrough]
get { return this.keys; }
}
///
/// Gets the number of entries in the index.
/// This value is not current and is only is updated by Api.JetComputeStats.
///
public int Entries
{
[DebuggerStepThrough]
get { return this.entries; }
}
///
/// Gets the number of pages in the index.
/// This value is not current and is only is updated by Api.JetComputeStats.
///
public int Pages
{
[DebuggerStepThrough]
get { return this.pages; }
}
///
/// Returns a that represents the current .
///
///
/// A that represents the current .
///
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append(this.Name);
sb.Append(" (");
foreach (var segment in this.IndexSegments)
{
sb.Append(segment.ToString());
}
sb.Append(")");
return sb.ToString();
}
}
}