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
- TokenizerHelper.cs
- TextDecorationCollection.cs
- XpsS0ValidatingLoader.cs
- GotoExpression.cs
- IDQuery.cs
- PropVariant.cs
- FrameworkContentElement.cs
- ThicknessConverter.cs
- DataMisalignedException.cs
- IdnElement.cs
- StorageMappingFragment.cs
- ContextStaticAttribute.cs
- SecurityState.cs
- UserControlFileEditor.cs
- PublisherIdentityPermission.cs
- CDSsyncETWBCLProvider.cs
- HttpContextWrapper.cs
- BaseCollection.cs
- SafeRightsManagementPubHandle.cs
- VersionUtil.cs
- OLEDB_Util.cs
- InputLanguageProfileNotifySink.cs
- JsonFormatGeneratorStatics.cs
- ChtmlPhoneCallAdapter.cs
- StrongNameMembershipCondition.cs
- DrawingCollection.cs
- EncryptedType.cs
- listitem.cs
- Converter.cs
- InternalDuplexChannelListener.cs
- BinHexDecoder.cs
- XmlNodeChangedEventManager.cs
- GridViewColumnHeader.cs
- RectKeyFrameCollection.cs
- TreeViewAutomationPeer.cs
- querybuilder.cs
- CompilerLocalReference.cs
- OdbcConnectionHandle.cs
- Decoder.cs
- XmlSchemaSimpleTypeList.cs
- TextPenaltyModule.cs
- WinFormsComponentEditor.cs
- AsyncWaitHandle.cs
- WorkItem.cs
- ManualResetEventSlim.cs
- ImageMetadata.cs
- recordstatefactory.cs
- PolicyManager.cs
- ScriptingRoleServiceSection.cs
- Mapping.cs
- WrappedIUnknown.cs
- MsiStyleLogWriter.cs
- GuidelineSet.cs
- EventDescriptorCollection.cs
- ListViewGroup.cs
- SendingRequestEventArgs.cs
- CopyAttributesAction.cs
- SimpleHandlerFactory.cs
- RoutedEventConverter.cs
- DesignTimeVisibleAttribute.cs
- ValidatedControlConverter.cs
- TypeHelper.cs
- HtmlInputFile.cs
- TreeViewItem.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- HttpCachePolicyBase.cs
- SqlUserDefinedAggregateAttribute.cs
- Misc.cs
- FillRuleValidation.cs
- OracleString.cs
- AngleUtil.cs
- ChangeBlockUndoRecord.cs
- precedingsibling.cs
- DataGridViewSelectedColumnCollection.cs
- CapabilitiesPattern.cs
- XmlDataSourceView.cs
- EventDescriptorCollection.cs
- SqlDependency.cs
- HashCryptoHandle.cs
- KeyValueConfigurationElement.cs
- TypedAsyncResult.cs
- FieldToken.cs
- EventDescriptor.cs
- WorkflowInstanceExtensionCollection.cs
- TraceRecord.cs
- PreProcessor.cs
- TokenFactoryFactory.cs
- TransformGroup.cs
- WindowsListViewGroupHelper.cs
- Splitter.cs
- KeyedCollection.cs
- UpdateDelegates.Generated.cs
- LongValidator.cs
- RoleGroupCollection.cs
- BaseHashHelper.cs
- TableLayoutSettingsTypeConverter.cs
- Timer.cs
- MimeImporter.cs
- ObjectSet.cs
- ValueConversionAttribute.cs