Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Log / System / IO / Log / LogArchiveSnapshot.cs / 1 / LogArchiveSnapshot.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.IO.Log
{
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
public sealed class LogArchiveSnapshot
{
SequenceNumber archiveTail;
SequenceNumber baseSequenceNumber;
SequenceNumber lastSequenceNumber;
IEnumerable regions;
const int MaxFileNameLength = 260;
internal LogArchiveSnapshot(LogStore store,
ulong lsnLow,
ulong lsnHigh)
{
StringBuilder baseLogFileName = new StringBuilder(MaxFileNameLength);
int actualLength;
ulong baseLogFileOffset;
ulong baseLogFileLength;
ulong lsnBase;
ulong lsnLast;
ulong lsnArchiveTail;
SafeArchiveContext archiveContext = null;
try
{
while (!UnsafeNativeMethods.PrepareLogArchive(
store.Handle,
baseLogFileName,
baseLogFileName.Capacity,
ref lsnLow,
ref lsnHigh,
out actualLength,
out baseLogFileOffset,
out baseLogFileLength,
out lsnBase,
out lsnLast,
out lsnArchiveTail,
out archiveContext))
{
baseLogFileName.EnsureCapacity(actualLength+1);
}
this.archiveTail = new SequenceNumber(lsnArchiveTail);
this.baseSequenceNumber = new SequenceNumber(lsnBase);
this.lastSequenceNumber = new SequenceNumber(lsnLast);
List regions = new List();
byte[] readBuffer = new byte[checked((uint)baseLogFileLength)];
uint actualDataLength = 0;
unsafe
{
fixed(byte *pbReadBuffer = readBuffer)
{
UnsafeNativeMethods.ReadLogArchiveMetadata(
archiveContext,
0,
readBuffer.Length,
pbReadBuffer,
out actualDataLength);
}
}
byte[] baseFileData;
if (actualDataLength == (uint)baseLogFileLength)
{
baseFileData = readBuffer;
}
else
{
baseFileData = new byte[actualDataLength];
Array.Copy(readBuffer, baseFileData, baseFileData.Length);
}
regions.Add(new FileRegion((long)baseLogFileLength,
baseLogFileName.ToString(),
(long)baseLogFileOffset,
baseFileData));
CLFS_ARCHIVE_DESCRIPTOR descriptor = new CLFS_ARCHIVE_DESCRIPTOR();
while(true)
{
int returnedCount;
if (!UnsafeNativeMethods.GetNextLogArchiveExtentSingle(
archiveContext,
ref descriptor,
out returnedCount))
{
break;
}
if (returnedCount < 1) break;
long start = checked((long)descriptor.coffLow);
long length = checked((long)(descriptor.coffHigh - descriptor.coffLow));
string fileName = descriptor.infoContainer.GetActualFileName(store.Handle);
FileInfo containerInfo;
containerInfo = new FileInfo(fileName);
regions.Add(new FileRegion(containerInfo.Length,
fileName,
start,
length));
}
this.regions = regions.AsReadOnly();
}
finally
{
if (archiveContext != null && !archiveContext.IsInvalid)
{
archiveContext.Close();
}
}
}
public IEnumerable ArchiveRegions
{
get
{
return this.regions;
}
}
public SequenceNumber ArchiveTail
{
get
{
return this.archiveTail;
}
}
public SequenceNumber BaseSequenceNumber
{
get
{
return this.baseSequenceNumber;
}
}
public SequenceNumber LastSequenceNumber
{
get
{
return this.lastSequenceNumber;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XPathDocumentBuilder.cs
- MergeEnumerator.cs
- RegexWriter.cs
- HttpRuntimeSection.cs
- VirtualDirectoryMappingCollection.cs
- GreenMethods.cs
- StorageComplexPropertyMapping.cs
- SocketException.cs
- LayoutDump.cs
- ColorBlend.cs
- PersonalizationState.cs
- NumericUpDownAccelerationCollection.cs
- EntityDataSourceWrapperCollection.cs
- SerializableTypeCodeDomSerializer.cs
- ResourceKey.cs
- ModelUIElement3D.cs
- ReleaseInstanceMode.cs
- SystemIPAddressInformation.cs
- PKCS1MaskGenerationMethod.cs
- DataStorage.cs
- FactoryGenerator.cs
- HierarchicalDataSourceIDConverter.cs
- ServiceReference.cs
- PropertyStore.cs
- MissingManifestResourceException.cs
- CompiledIdentityConstraint.cs
- CryptoKeySecurity.cs
- BamlRecordHelper.cs
- Native.cs
- CompositeControl.cs
- LazyTextWriterCreator.cs
- XmlArrayAttribute.cs
- DispatchChannelSink.cs
- DropDownList.cs
- ReachPageContentSerializer.cs
- Partitioner.cs
- LineProperties.cs
- DataGridViewCellValueEventArgs.cs
- NavigationEventArgs.cs
- DispatcherTimer.cs
- BindMarkupExtensionSerializer.cs
- CodeActivityContext.cs
- _NtlmClient.cs
- _RequestCacheProtocol.cs
- Vector.cs
- TripleDESCryptoServiceProvider.cs
- ConditionCollection.cs
- SecurityTokenException.cs
- VoiceSynthesis.cs
- ExceptionTrace.cs
- SqlStatistics.cs
- ReflectionTypeLoadException.cs
- BufferCache.cs
- ImpersonateTokenRef.cs
- LocalBuilder.cs
- BinaryWriter.cs
- FilterableAttribute.cs
- SiteMapSection.cs
- GenericTypeParameterBuilder.cs
- InstanceBehavior.cs
- ClientProxyGenerator.cs
- DataGridViewTextBoxCell.cs
- DeploymentSection.cs
- ReachDocumentReferenceSerializer.cs
- AppDomainFactory.cs
- MexHttpBindingCollectionElement.cs
- ContextStaticAttribute.cs
- StaticSiteMapProvider.cs
- XamlStyleSerializer.cs
- DescendantBaseQuery.cs
- ICollection.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- TextFormattingConverter.cs
- DeflateStream.cs
- LinearGradientBrush.cs
- DataControlCommands.cs
- ColumnCollection.cs
- DocumentXPathNavigator.cs
- IPPacketInformation.cs
- Blend.cs
- DocumentOrderQuery.cs
- CompositeTypefaceMetrics.cs
- XomlSerializationHelpers.cs
- AsmxEndpointPickerExtension.cs
- HwndProxyElementProvider.cs
- ExtenderProvidedPropertyAttribute.cs
- WebConfigurationHost.cs
- ExpressionLink.cs
- RSAOAEPKeyExchangeDeformatter.cs
- HeaderPanel.cs
- XmlBinaryReader.cs
- ReachFixedPageSerializerAsync.cs
- BrushConverter.cs
- Int32AnimationBase.cs
- MetadataPropertyAttribute.cs
- EdmTypeAttribute.cs
- FullTextState.cs
- ShaperBuffers.cs
- UnsafeMethods.cs
- AuthenticationConfig.cs