Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Log / System / IO / Log / FileLogRecordEnumerator.cs / 1 / FileLogRecordEnumerator.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.IO.Log
{
using System;
using System.Collections;
using System.Collections.Generic;
internal class FileLogRecordEnumerable : IEnumerable
{
LogRecordEnumeratorType logRecordEnum;
SimpleFileLog log;
SequenceNumber start;
bool enumRestartAreas;
internal FileLogRecordEnumerable(
SimpleFileLog log,
SequenceNumber start,
LogRecordEnumeratorType logRecordEnum,
bool enumRestartAreas)
{
this.log = log;
this.start = start;
this.logRecordEnum = logRecordEnum;
this.enumRestartAreas = enumRestartAreas;
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
public IEnumerator GetEnumerator()
{
return new FileLogRecordEnumerator(
log,
start,
logRecordEnum,
enumRestartAreas);
}
}
internal class FileLogRecordEnumerator : IEnumerator
{
FileLogRecordStream stream = null;
FileLogRecord record = null;
bool enumStarted = false;
SequenceNumber start;
SequenceNumber current;
LogRecordEnumeratorType logRecordEnum;
SimpleFileLog log;
bool disposed = false;
bool enumRestartAreas;
internal FileLogRecordEnumerator(
SimpleFileLog log,
SequenceNumber start,
LogRecordEnumeratorType logRecordEnum,
bool enumRestartAreas)
{
this.log = log;
this.start = start;
this.current = start;
this.logRecordEnum = logRecordEnum;
this.enumRestartAreas = enumRestartAreas;
}
object IEnumerator.Current
{
get
{
return this.Current;
}
}
public LogRecord Current
{
get
{
if (this.disposed)
#pragma warning suppress 56503
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ObjectDisposed());
// IEnumerable interface contract for "current" member can throw InvalidOperationException. Suppressing this warning.
if (!this.enumStarted)
#pragma warning suppress 56503
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.EnumNotStarted());
if (this.record == null)
#pragma warning suppress 56503
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.EnumEnded());
return this.record;
}
}
public bool MoveNext()
{
if (this.disposed)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ObjectDisposed());
if (this.current == SequenceNumber.Invalid)
return false;
if (!this.enumStarted)
{
this.enumStarted = true;
}
else
{
switch (this.logRecordEnum)
{
case LogRecordEnumeratorType.Next:
this.current = this.stream.NextLsn;
break;
case LogRecordEnumeratorType.Previous:
this.current = this.stream.Header.PreviousLsn;
break;
case LogRecordEnumeratorType.User:
this.current = this.stream.Header.NextUndoLsn;
break;
}
}
SequenceNumber first;
SequenceNumber last;
log.GetLogLimits(out first, out last);
if (this.current < first
|| last < this.current
|| this.current == SequenceNumber.Invalid)
{
this.record = null;
return false;
}
this.stream = new FileLogRecordStream(this.log, this.current);
if (!this.enumRestartAreas && this.stream.Header.IsRestartArea)
{
if (this.logRecordEnum == LogRecordEnumeratorType.Next)
{
// Move to the next record after restart area.
return MoveNext();
}
else
{
// We have hit a restart area.
// Restart areas have special values for prev and next undo in the header.
// Cannot enumerate further.
this.record = null;
return false;
}
}
this.record = new FileLogRecord(this.stream);
return true;
}
public void Reset()
{
if (this.disposed)
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(Error.ObjectDisposed());
this.enumStarted = false;
this.current = this.start;
this.record = null;
}
public void Dispose()
{
this.disposed = true;
}
}
}
// 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
- GACMembershipCondition.cs
- AffineTransform3D.cs
- TextParentUndoUnit.cs
- StandardOleMarshalObject.cs
- EncryptedHeader.cs
- Scripts.cs
- uribuilder.cs
- PagesChangedEventArgs.cs
- AbandonedMutexException.cs
- PerformanceCounterManager.cs
- ServiceReference.cs
- GraphicsPathIterator.cs
- AttributeTableBuilder.cs
- WhitespaceSignificantCollectionAttribute.cs
- WindowsListViewItemCheckBox.cs
- TextParaLineResult.cs
- SkipQueryOptionExpression.cs
- SiteMapDataSourceView.cs
- LineGeometry.cs
- TypeSemantics.cs
- StaticDataManager.cs
- MDIControlStrip.cs
- TypeElementCollection.cs
- SelectionChangedEventArgs.cs
- PointLightBase.cs
- DBCSCodePageEncoding.cs
- CharacterHit.cs
- ModelPropertyDescriptor.cs
- EmbeddedObject.cs
- GenericIdentity.cs
- PackageDocument.cs
- WebPageTraceListener.cs
- SmiRequestExecutor.cs
- sqlmetadatafactory.cs
- ISCIIEncoding.cs
- Mapping.cs
- XmlUnspecifiedAttribute.cs
- StateRuntime.cs
- PointAnimationUsingPath.cs
- SelectionPatternIdentifiers.cs
- DataBoundControl.cs
- InkSerializer.cs
- CategoryAttribute.cs
- IDReferencePropertyAttribute.cs
- ScaleTransform.cs
- ActiveXSerializer.cs
- WebPartUserCapability.cs
- SafeRightsManagementPubHandle.cs
- ConfigXmlDocument.cs
- HtmlButton.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- WindowVisualStateTracker.cs
- ToolStripLocationCancelEventArgs.cs
- ApplicationCommands.cs
- ListBoxChrome.cs
- Query.cs
- AssemblyAssociatedContentFileAttribute.cs
- SamlAuthorityBinding.cs
- ImpersonateTokenRef.cs
- NameValuePermission.cs
- DockPattern.cs
- SequentialUshortCollection.cs
- OpenFileDialog.cs
- CacheForPrimitiveTypes.cs
- IISUnsafeMethods.cs
- MenuStrip.cs
- UnmanagedMemoryStreamWrapper.cs
- UserPreferenceChangedEventArgs.cs
- DataGridHeaderBorder.cs
- LinkDesigner.cs
- PathGeometry.cs
- CodeValidator.cs
- PrePostDescendentsWalker.cs
- ContourSegment.cs
- AssemblyBuilderData.cs
- ContainsRowNumberChecker.cs
- PageBreakRecord.cs
- WebReferenceCollection.cs
- IisTraceWebEventProvider.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- FlowDocumentReaderAutomationPeer.cs
- Point3DAnimationUsingKeyFrames.cs
- FilterQuery.cs
- RepeaterItemEventArgs.cs
- HasCopySemanticsAttribute.cs
- XmlWriterDelegator.cs
- WebContext.cs
- UnmanagedMemoryAccessor.cs
- SqlGatherProducedAliases.cs
- Collection.cs
- XmlAnyAttributeAttribute.cs
- ToolBar.cs
- ObjectSpanRewriter.cs
- DbModificationClause.cs
- StylusPointCollection.cs
- XmlLangPropertyAttribute.cs
- OrthographicCamera.cs
- Image.cs
- UnknownExceptionActionHelper.cs
- TypeExtensionConverter.cs