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
- MSAAWinEventWrap.cs
- PositiveTimeSpanValidator.cs
- WindowExtensionMethods.cs
- EventRecordWrittenEventArgs.cs
- ImmutableObjectAttribute.cs
- CustomAttributeFormatException.cs
- WorkflowCommandExtensionItem.cs
- WhitespaceReader.cs
- ClientViaElement.cs
- DataFieldConverter.cs
- CompilationSection.cs
- TypeBrowser.xaml.cs
- ObjectReferenceStack.cs
- HandlerFactoryWrapper.cs
- WebDisplayNameAttribute.cs
- FormViewModeEventArgs.cs
- FrameworkTemplate.cs
- HtmlTableRow.cs
- ActivityStateQuery.cs
- IEnumerable.cs
- LabelDesigner.cs
- DefinitionUpdate.cs
- XmlILStorageConverter.cs
- TableLayoutPanelCodeDomSerializer.cs
- Internal.cs
- SharedPerformanceCounter.cs
- GridErrorDlg.cs
- IndependentlyAnimatedPropertyMetadata.cs
- SystemIPv6InterfaceProperties.cs
- InputProcessorProfilesLoader.cs
- BaseUriHelper.cs
- ReadOnlyObservableCollection.cs
- FullTextBreakpoint.cs
- ErrorStyle.cs
- EntityDataSourceStatementEditorForm.cs
- ToolStripGripRenderEventArgs.cs
- ModelItemKeyValuePair.cs
- AutomationElement.cs
- TextBox.cs
- CancellationHandler.cs
- Quaternion.cs
- DecimalAnimation.cs
- XamlNamespaceHelper.cs
- ApplicationContext.cs
- RadioButtonBaseAdapter.cs
- InnerItemCollectionView.cs
- Validator.cs
- RuntimeResourceSet.cs
- GridLength.cs
- DbQueryCommandTree.cs
- FieldInfo.cs
- LineProperties.cs
- SchemaImporterExtensionsSection.cs
- PropertyNames.cs
- XPathDocument.cs
- XmlArrayItemAttributes.cs
- TraceXPathNavigator.cs
- BigInt.cs
- MouseButton.cs
- SmiMetaDataProperty.cs
- QuotedPrintableStream.cs
- MarshalByRefObject.cs
- FormViewDeletedEventArgs.cs
- ProcessModuleCollection.cs
- NavigationEventArgs.cs
- Gdiplus.cs
- CommentAction.cs
- SafeTokenHandle.cs
- TypedTableBaseExtensions.cs
- OleTxTransactionInfo.cs
- RuntimeHelpers.cs
- ByteRangeDownloader.cs
- WindowsFormsHelpers.cs
- PropertyDescriptorComparer.cs
- CodeTypeParameter.cs
- CreateUserWizard.cs
- InheritedPropertyChangedEventArgs.cs
- SelectionEditor.cs
- HtmlTextArea.cs
- ComponentEditorPage.cs
- Quaternion.cs
- MemberAccessException.cs
- XmlSerializerFactory.cs
- Stopwatch.cs
- ISCIIEncoding.cs
- WebContext.cs
- ChannelHandler.cs
- RegexBoyerMoore.cs
- ResolveDuplexAsyncResult.cs
- GridViewCommandEventArgs.cs
- SystemIdentity.cs
- DataGridViewCellCancelEventArgs.cs
- HttpContext.cs
- TransactionFormatter.cs
- TypeBuilder.cs
- UIElementParagraph.cs
- CustomMenuItemCollection.cs
- ValidationResult.cs
- XmlNodeComparer.cs
- PreviewPageInfo.cs