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
- StackOverflowException.cs
- UnknownWrapper.cs
- SimpleApplicationHost.cs
- SortedDictionary.cs
- QueuePathDialog.cs
- View.cs
- mediaeventargs.cs
- Utility.cs
- AssemblyResourceLoader.cs
- FatalException.cs
- TextRenderer.cs
- ScriptResourceInfo.cs
- Line.cs
- AssemblyBuilder.cs
- ListBase.cs
- TextEffect.cs
- cryptoapiTransform.cs
- FlowDocument.cs
- SqlAggregateChecker.cs
- UrlMappingsSection.cs
- PeerHopCountAttribute.cs
- ListBase.cs
- TextSelectionProcessor.cs
- WSUtilitySpecificationVersion.cs
- TransactionalPackage.cs
- SpinLock.cs
- XmlDataSourceView.cs
- ServiceEndpointCollection.cs
- UnsafeNativeMethods.cs
- ReflectTypeDescriptionProvider.cs
- FilteredReadOnlyMetadataCollection.cs
- SynchronizedDispatch.cs
- InternalControlCollection.cs
- EntityObject.cs
- DataGridItemEventArgs.cs
- PathGeometry.cs
- DocumentCollection.cs
- SurrogateEncoder.cs
- ErasingStroke.cs
- WebBrowserPermission.cs
- BaseProcessor.cs
- LZCodec.cs
- MessageContractAttribute.cs
- UInt32.cs
- StrokeCollection2.cs
- ExpressionEditorAttribute.cs
- Shared.cs
- ImplicitInputBrush.cs
- XmlRawWriter.cs
- SystemIPGlobalStatistics.cs
- ConfigurationPropertyCollection.cs
- ToolStripItemRenderEventArgs.cs
- BitVector32.cs
- ListSortDescription.cs
- RoutedEventValueSerializer.cs
- XPathNodeList.cs
- SplitContainer.cs
- DockAndAnchorLayout.cs
- HashHelper.cs
- WinOEToolBoxItem.cs
- Signature.cs
- IdentityManager.cs
- Policy.cs
- StorageEntityTypeMapping.cs
- XmlWriterTraceListener.cs
- WindowsListViewGroup.cs
- FrameworkElementFactory.cs
- NewArray.cs
- PathGeometry.cs
- Scanner.cs
- ParsedRoute.cs
- RegexRunnerFactory.cs
- SoapFault.cs
- InvalidComObjectException.cs
- OdbcEnvironmentHandle.cs
- TableLayoutRowStyleCollection.cs
- BufferBuilder.cs
- TabRenderer.cs
- ConsoleCancelEventArgs.cs
- BitmapFrameDecode.cs
- MatcherBuilder.cs
- _TransmitFileOverlappedAsyncResult.cs
- ComAdminWrapper.cs
- StylusTip.cs
- ConstructorExpr.cs
- BitmapEffectGroup.cs
- WebPartAddingEventArgs.cs
- BuilderElements.cs
- GroupByQueryOperator.cs
- RawMouseInputReport.cs
- Viewport3DVisual.cs
- DataViewListener.cs
- TriggerBase.cs
- GeneralTransformCollection.cs
- StoreItemCollection.Loader.cs
- TextElementCollection.cs
- RegistryPermission.cs
- CheckPair.cs
- HitTestWithGeometryDrawingContextWalker.cs
- TextRunTypographyProperties.cs