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; IEnumerableregions; 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
- Timer.cs
- ClientSettingsSection.cs
- ErrorWebPart.cs
- XdrBuilder.cs
- DataBoundLiteralControl.cs
- OleDbMetaDataFactory.cs
- WebControlParameterProxy.cs
- WebPartVerb.cs
- HtmlInputImage.cs
- TextControlDesigner.cs
- HtmlTernaryTree.cs
- recordstatefactory.cs
- SimpleHandlerBuildProvider.cs
- WebContext.cs
- HealthMonitoringSection.cs
- StrongNamePublicKeyBlob.cs
- IPAddress.cs
- GridViewRowPresenterBase.cs
- ResourceDictionary.cs
- SoapProtocolImporter.cs
- KeyTime.cs
- DataGridViewElement.cs
- NodeFunctions.cs
- DbConnectionOptions.cs
- DataGridViewLinkColumn.cs
- RSAProtectedConfigurationProvider.cs
- NamespaceImport.cs
- WindowsScrollBarBits.cs
- util.cs
- StringKeyFrameCollection.cs
- SQLDouble.cs
- ComponentEditorForm.cs
- ControlType.cs
- WmlTextViewAdapter.cs
- BaseTreeIterator.cs
- HttpResponseBase.cs
- ExpressionSelection.cs
- PageAdapter.cs
- Pens.cs
- Visual3D.cs
- AuthenticationModuleElementCollection.cs
- MasterPageCodeDomTreeGenerator.cs
- ReadOnlyKeyedCollection.cs
- DocobjHost.cs
- OrderedDictionaryStateHelper.cs
- Pen.cs
- SqlParameter.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- ListViewItemSelectionChangedEvent.cs
- WebServiceData.cs
- OSFeature.cs
- TextDecorations.cs
- SerializationInfoEnumerator.cs
- LicFileLicenseProvider.cs
- GeneralTransform2DTo3DTo2D.cs
- CollectionContainer.cs
- DataGridDetailsPresenter.cs
- TaskHelper.cs
- RelationshipNavigation.cs
- TemplateKey.cs
- AssociationSetMetadata.cs
- DataColumn.cs
- SqlCachedBuffer.cs
- Object.cs
- URL.cs
- Condition.cs
- NamedElement.cs
- InstanceKeyView.cs
- DBConnection.cs
- DataBindingsDialog.cs
- IisTraceWebEventProvider.cs
- ButtonChrome.cs
- ClientType.cs
- PeerToPeerException.cs
- WrappedIUnknown.cs
- NamespaceList.cs
- EventManager.cs
- BindValidator.cs
- WebPartZoneBase.cs
- SQLMoneyStorage.cs
- FilteredDataSetHelper.cs
- ReflectPropertyDescriptor.cs
- ImageClickEventArgs.cs
- ClientTargetSection.cs
- Code.cs
- XmlILConstructAnalyzer.cs
- AdornerPresentationContext.cs
- RecordBuilder.cs
- CompensationTokenData.cs
- ContextQuery.cs
- ReversePositionQuery.cs
- SelectedDatesCollection.cs
- ThemeDirectoryCompiler.cs
- TextEditorMouse.cs
- hresults.cs
- DefaultAssemblyResolver.cs
- XmlChoiceIdentifierAttribute.cs
- RootNamespaceAttribute.cs
- SynchronizingStream.cs
- XamlFigureLengthSerializer.cs