Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Log / System / IO / Log / FileLogRecordEnumerator.cs / 1305376 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebServiceTypeData.cs
- ObjectStateFormatter.cs
- GradientStop.cs
- AssociationSetEnd.cs
- CheckBoxBaseAdapter.cs
- UInt16Converter.cs
- TextChangedEventArgs.cs
- SqlVisitor.cs
- Int16Animation.cs
- ExpressionStringBuilder.cs
- XmlHierarchyData.cs
- PerformanceCounterPermissionAttribute.cs
- StylusButtonCollection.cs
- XpsS0ValidatingLoader.cs
- UnsettableComboBox.cs
- WebPartZoneAutoFormat.cs
- DataRecordObjectView.cs
- XmlWriter.cs
- SrgsNameValueTag.cs
- Soap11ServerProtocol.cs
- CodeTypeConstructor.cs
- processwaithandle.cs
- SiteOfOriginContainer.cs
- PermissionListSet.cs
- PrintDialog.cs
- UniqueIdentifierService.cs
- StructuredTypeEmitter.cs
- SplitterCancelEvent.cs
- TraceUtils.cs
- SafeEventHandle.cs
- InputReferenceExpression.cs
- _NegoStream.cs
- PriorityRange.cs
- MDIWindowDialog.cs
- ConnectionManager.cs
- Double.cs
- OpCopier.cs
- HttpListenerContext.cs
- SqlConnectionPoolProviderInfo.cs
- ConfigurationProperty.cs
- TypeConverterBase.cs
- LinqDataSourceValidationException.cs
- FixedPageProcessor.cs
- FloatAverageAggregationOperator.cs
- ColumnPropertiesGroup.cs
- AccessedThroughPropertyAttribute.cs
- QilBinary.cs
- XmlSchemaRedefine.cs
- ServerValidateEventArgs.cs
- ParagraphResult.cs
- ColumnResizeAdorner.cs
- SoapIncludeAttribute.cs
- InvalidDataContractException.cs
- UnknownWrapper.cs
- SerializationInfoEnumerator.cs
- Clock.cs
- OleStrCAMarshaler.cs
- InstanceDataCollection.cs
- TemplateBuilder.cs
- AuthenticationModulesSection.cs
- ObjectSecurity.cs
- URL.cs
- SoapInteropTypes.cs
- HttpApplicationFactory.cs
- TextPointerBase.cs
- Command.cs
- ChainOfDependencies.cs
- TrustManagerMoreInformation.cs
- ExpressionEditorAttribute.cs
- MessagePartProtectionMode.cs
- UnmanagedMemoryStreamWrapper.cs
- GridViewColumnHeader.cs
- GB18030Encoding.cs
- BrowserInteropHelper.cs
- AliasedExpr.cs
- WindowsFormsSectionHandler.cs
- LineInfo.cs
- MetadataCache.cs
- InstanceContext.cs
- LiteralTextContainerControlBuilder.cs
- AppAction.cs
- DataGridPageChangedEventArgs.cs
- ReadOnlyCollection.cs
- DataExpression.cs
- DuplexClientBase.cs
- TransformerTypeCollection.cs
- RichTextBox.cs
- SmiGettersStream.cs
- TableRowsCollectionEditor.cs
- ExtentKey.cs
- CustomCategoryAttribute.cs
- XmlDocument.cs
- SafeNativeMethods.cs
- FileSystemEventArgs.cs
- WindowsListViewGroup.cs
- SqlIdentifier.cs
- ExtendedPropertyDescriptor.cs
- FunctionNode.cs
- Gdiplus.cs
- TreeViewImageIndexConverter.cs