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
- TextBoxAutoCompleteSourceConverter.cs
- FormatConvertedBitmap.cs
- DataGridRelationshipRow.cs
- NumberSubstitution.cs
- SelectionPattern.cs
- Grammar.cs
- SchemaMerger.cs
- FileSystemEnumerable.cs
- BitmapEffect.cs
- AssemblyNameProxy.cs
- CellRelation.cs
- CaseInsensitiveHashCodeProvider.cs
- EventDescriptor.cs
- BindingList.cs
- HttpListenerException.cs
- ValueOfAction.cs
- WebMessageFormatHelper.cs
- ProfileGroupSettings.cs
- IntPtr.cs
- BinaryCommonClasses.cs
- WinFormsSecurity.cs
- SystemFonts.cs
- WindowsStatusBar.cs
- DispatchChannelSink.cs
- ResolveInfo.cs
- TypeConverterHelper.cs
- QilLiteral.cs
- TypeDelegator.cs
- AbstractSvcMapFileLoader.cs
- RootBuilder.cs
- KeyMatchBuilder.cs
- RuleSetBrowserDialog.cs
- TimelineGroup.cs
- ProcessInputEventArgs.cs
- KeyBinding.cs
- Assert.cs
- KeyNotFoundException.cs
- DataGridColumn.cs
- CultureTableRecord.cs
- CompilerInfo.cs
- DataSourceCacheDurationConverter.cs
- FigureParaClient.cs
- InputElement.cs
- SystemThemeKey.cs
- RawMouseInputReport.cs
- Int32RectConverter.cs
- HostingEnvironment.cs
- ProxyFragment.cs
- ObjectDataSourceView.cs
- OracleLob.cs
- DCSafeHandle.cs
- DbDeleteCommandTree.cs
- FixedSOMElement.cs
- NumericUpDownAcceleration.cs
- CertificateReferenceElement.cs
- RepeatBehavior.cs
- _DisconnectOverlappedAsyncResult.cs
- ViewGenResults.cs
- Operand.cs
- SrgsElementList.cs
- ToolStripItemClickedEventArgs.cs
- BuildDependencySet.cs
- TextRunCacheImp.cs
- ClientSettingsProvider.cs
- HyperLinkField.cs
- ActivityTrace.cs
- TypeConverter.cs
- _PooledStream.cs
- TextServicesContext.cs
- BaseValidator.cs
- SoapEnvelopeProcessingElement.cs
- ValueUtilsSmi.cs
- QualifiedCellIdBoolean.cs
- BezierSegment.cs
- SecondaryViewProvider.cs
- PageVisual.cs
- Cursor.cs
- CodeDomSerializationProvider.cs
- PrintSchema.cs
- AliasExpr.cs
- DeferredTextReference.cs
- MemberInfoSerializationHolder.cs
- StringComparer.cs
- messageonlyhwndwrapper.cs
- ArraySubsetEnumerator.cs
- Util.cs
- ControlTemplate.cs
- Stroke.cs
- FixUpCollection.cs
- SecurityPolicySection.cs
- NumericUpDownAccelerationCollection.cs
- InheritanceService.cs
- ISAPIWorkerRequest.cs
- PointLight.cs
- OnOperation.cs
- IriParsingElement.cs
- DetailsViewRowCollection.cs
- UserNameSecurityTokenParameters.cs
- EventItfInfo.cs
- DataGridViewComboBoxColumn.cs