Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Log / System / IO / Log / LogArchiveSnapshot.cs / 1305376 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GlyphShapingProperties.cs
- CriticalExceptions.cs
- StringReader.cs
- OrderByExpression.cs
- UnauthorizedWebPart.cs
- UnicodeEncoding.cs
- DataGridViewCellEventArgs.cs
- GridItemPatternIdentifiers.cs
- PassportAuthenticationEventArgs.cs
- FormViewAutoFormat.cs
- TextDecorationCollectionConverter.cs
- tooltip.cs
- CopyOfAction.cs
- TextSelectionProcessor.cs
- LinqTreeNodeEvaluator.cs
- validationstate.cs
- ColorAnimationUsingKeyFrames.cs
- AttachInfo.cs
- WebHeaderCollection.cs
- XmlImplementation.cs
- ProcessInfo.cs
- TransportChannelListener.cs
- XmlComplianceUtil.cs
- EditingMode.cs
- DataGridViewHeaderCell.cs
- ExpandCollapseProviderWrapper.cs
- SubpageParagraph.cs
- MediaElement.cs
- SoapExtensionTypeElement.cs
- DataViewSettingCollection.cs
- KerberosTicketHashIdentifierClause.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- XmlCollation.cs
- ResourcePool.cs
- InstanceOwnerException.cs
- CommentEmitter.cs
- ResourceDictionaryCollection.cs
- DocumentOrderQuery.cs
- FirstMatchCodeGroup.cs
- BitmapEffectInputData.cs
- CompilerLocalReference.cs
- TreeIterator.cs
- OutOfMemoryException.cs
- SoapEnumAttribute.cs
- MediaCommands.cs
- CfgRule.cs
- XmlAttributes.cs
- DataGridTableStyleMappingNameEditor.cs
- SchemaTypeEmitter.cs
- MultiTrigger.cs
- ListMarkerSourceInfo.cs
- grammarelement.cs
- Merger.cs
- ListViewGroup.cs
- COM2ColorConverter.cs
- MenuAdapter.cs
- __ConsoleStream.cs
- ListenerConstants.cs
- SafeRightsManagementHandle.cs
- EntityPropertyMappingAttribute.cs
- DefaultProfileManager.cs
- SafeFileMappingHandle.cs
- ViewGenerator.cs
- ColorConvertedBitmap.cs
- __Error.cs
- HtmlShimManager.cs
- CompensatableTransactionScopeActivityDesigner.cs
- SiteMapSection.cs
- ListViewItemEventArgs.cs
- COM2ExtendedUITypeEditor.cs
- Directory.cs
- StylusPointProperty.cs
- ToolStripControlHost.cs
- PrinterResolution.cs
- InnerItemCollectionView.cs
- Dispatcher.cs
- MemoryMappedFile.cs
- QueryCacheManager.cs
- DecoderBestFitFallback.cs
- DelegateTypeInfo.cs
- ValidationSettings.cs
- AdjustableArrowCap.cs
- EnvironmentPermission.cs
- PersistenceTypeAttribute.cs
- SecurityTokenSerializer.cs
- COM2FontConverter.cs
- HandlerBase.cs
- IncrementalCompileAnalyzer.cs
- DataBoundControl.cs
- CodeGotoStatement.cs
- TextParagraphView.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- FileNotFoundException.cs
- TileBrush.cs
- BufferedReadStream.cs
- BindValidationContext.cs
- CommentEmitter.cs
- SecuritySessionSecurityTokenAuthenticator.cs
- AssociationSetMetadata.cs
- EdmEntityTypeAttribute.cs