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
- XmlQueryTypeFactory.cs
- Brush.cs
- ThreadNeutralSemaphore.cs
- MulticastNotSupportedException.cs
- CharacterBufferReference.cs
- MediaScriptCommandRoutedEventArgs.cs
- Thickness.cs
- ConfigPathUtility.cs
- XmlWhitespace.cs
- DeploymentSection.cs
- ReadOnlyAttribute.cs
- SafeSystemMetrics.cs
- XmlArrayItemAttributes.cs
- SignatureResourcePool.cs
- EpmContentSerializerBase.cs
- cache.cs
- KeyInterop.cs
- DataKey.cs
- InteropAutomationProvider.cs
- SplitContainer.cs
- HtmlAnchor.cs
- DataGridViewButtonColumn.cs
- DesignerInterfaces.cs
- Set.cs
- DataExchangeServiceBinder.cs
- DataGridViewRowsRemovedEventArgs.cs
- DispatcherOperation.cs
- SpotLight.cs
- DrawListViewItemEventArgs.cs
- MembershipSection.cs
- TypeNameConverter.cs
- DataObject.cs
- Enumerable.cs
- TemplatedWizardStep.cs
- TableLayoutRowStyleCollection.cs
- SmiMetaDataProperty.cs
- CustomAttributeBuilder.cs
- _SecureChannel.cs
- DebugView.cs
- CacheSection.cs
- _emptywebproxy.cs
- MappingSource.cs
- ZipFileInfo.cs
- AmbientLight.cs
- EmbeddedObject.cs
- ApplicationProxyInternal.cs
- RubberbandSelector.cs
- TagPrefixAttribute.cs
- FreezableOperations.cs
- Geometry.cs
- GroupByQueryOperator.cs
- _SSPIWrapper.cs
- DateTimeOffsetStorage.cs
- SQLByte.cs
- BStrWrapper.cs
- PeerChannelListener.cs
- HtmlElement.cs
- Symbol.cs
- DataBoundLiteralControl.cs
- BamlLocalizableResource.cs
- ECDiffieHellman.cs
- login.cs
- FunctionQuery.cs
- BatchParser.cs
- ApplicationFileCodeDomTreeGenerator.cs
- MarkupExtensionParser.cs
- BitmapMetadataEnumerator.cs
- ReadOnlyHierarchicalDataSourceView.cs
- RootDesignerSerializerAttribute.cs
- MailDefinition.cs
- OleDbSchemaGuid.cs
- DictationGrammar.cs
- NotifyIcon.cs
- WebPartVerbsEventArgs.cs
- ConfigurationLocation.cs
- DivideByZeroException.cs
- ReferenceService.cs
- Label.cs
- WriterOutput.cs
- Int16.cs
- DataGridViewCellCollection.cs
- ConfigurationException.cs
- CodeDirectionExpression.cs
- DefaultPrintController.cs
- HtmlWindowCollection.cs
- FixedPosition.cs
- FormsAuthenticationEventArgs.cs
- CacheMemory.cs
- TextParaLineResult.cs
- SQLSingle.cs
- DynamicField.cs
- FlowDocumentReader.cs
- ProjectionPath.cs
- UsernameTokenFactoryCredential.cs
- ApplicationDirectoryMembershipCondition.cs
- DataGridViewButtonCell.cs
- RectangleGeometry.cs
- SplitterPanel.cs
- ConnectionPoint.cs
- HttpDictionary.cs