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
- RTLAwareMessageBox.cs
- ArcSegment.cs
- WebPartZoneDesigner.cs
- SHA1CryptoServiceProvider.cs
- DataGridLinkButton.cs
- HttpRequest.cs
- ManagementObjectCollection.cs
- OleDbEnumerator.cs
- PropertyTabAttribute.cs
- SoapAttributeAttribute.cs
- Point3DKeyFrameCollection.cs
- StylusButtonCollection.cs
- XmlSchemaObject.cs
- SqlCacheDependencyDatabaseCollection.cs
- PropertyAccessVisitor.cs
- NonVisualControlAttribute.cs
- ClientOptions.cs
- Registry.cs
- Expander.cs
- BaseComponentEditor.cs
- ApplicationSecurityInfo.cs
- StringStorage.cs
- ImageSourceValueSerializer.cs
- VirtualPathUtility.cs
- sapiproxy.cs
- DataBoundControlHelper.cs
- KeyGesture.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- metadatamappinghashervisitor.cs
- XmlSchemaSimpleTypeList.cs
- altserialization.cs
- KnownTypes.cs
- CheckBoxList.cs
- ItemCheckedEvent.cs
- SortedDictionary.cs
- ManifestSignatureInformation.cs
- TextPattern.cs
- MobileControlDesigner.cs
- PrivilegedConfigurationManager.cs
- SizeLimitedCache.cs
- KeyValueInternalCollection.cs
- DesignerAttribute.cs
- MimeBasePart.cs
- SpecularMaterial.cs
- BaseParaClient.cs
- ViewGenResults.cs
- HttpAsyncResult.cs
- StatusBar.cs
- CharacterString.cs
- Translator.cs
- SafeRightsManagementPubHandle.cs
- _HeaderInfo.cs
- BuildProvider.cs
- ManagementException.cs
- OdbcErrorCollection.cs
- RectangleHotSpot.cs
- CodePageUtils.cs
- WebSysDescriptionAttribute.cs
- ValidateNames.cs
- PaintEvent.cs
- SQLGuid.cs
- TextElementEnumerator.cs
- ConfigurationErrorsException.cs
- EntitySetBase.cs
- SystemInformation.cs
- EdmProviderManifest.cs
- SystemIPv4InterfaceProperties.cs
- BaseTemplateParser.cs
- ActivityTypeResolver.xaml.cs
- ServerValidateEventArgs.cs
- ContentType.cs
- EdmType.cs
- ToggleProviderWrapper.cs
- RequestStatusBarUpdateEventArgs.cs
- CheckPair.cs
- HtmlTableCellCollection.cs
- SpellerHighlightLayer.cs
- ToolStripPanelCell.cs
- Base64Encoder.cs
- GridViewUpdatedEventArgs.cs
- InvalidCommandTreeException.cs
- RelatedView.cs
- ImageListStreamer.cs
- AutoGeneratedField.cs
- EdmComplexPropertyAttribute.cs
- PersonalizationEntry.cs
- CompareInfo.cs
- GenericAuthenticationEventArgs.cs
- ItemType.cs
- WindowsRichEditRange.cs
- ResourceExpression.cs
- WindowsProgressbar.cs
- IndexedEnumerable.cs
- ContainerUtilities.cs
- PackageStore.cs
- SqlTriggerContext.cs
- LayoutInformation.cs
- DataRelationPropertyDescriptor.cs
- BinaryExpressionHelper.cs
- DbProviderManifest.cs