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
- ToolStripLabel.cs
- isolationinterop.cs
- XPathEmptyIterator.cs
- FileChangeNotifier.cs
- XmlSchemaAll.cs
- TransformerInfo.cs
- DataGridColumnDropSeparator.cs
- _KerberosClient.cs
- NumericUpDownAcceleration.cs
- CacheEntry.cs
- StaticResourceExtension.cs
- OracleParameter.cs
- WindowsScrollBarBits.cs
- AncestorChangedEventArgs.cs
- EmptyEnumerator.cs
- ClientSettingsStore.cs
- TextTreeFixupNode.cs
- EncodingDataItem.cs
- HelpFileFileNameEditor.cs
- KeyInfo.cs
- WriterOutput.cs
- PageStatePersister.cs
- DataGridViewTopRowAccessibleObject.cs
- SignatureTargetIdManager.cs
- FormView.cs
- DateTimePicker.cs
- CodeChecksumPragma.cs
- SmtpClient.cs
- ConnectionStringsExpressionBuilder.cs
- ConstraintStruct.cs
- AttributeQuery.cs
- MediaTimeline.cs
- ArrayWithOffset.cs
- PhysicalAddress.cs
- SHA1CryptoServiceProvider.cs
- ByteStorage.cs
- X509Chain.cs
- ChangeToolStripParentVerb.cs
- HtmlMeta.cs
- TraceListeners.cs
- WindowsRichEditRange.cs
- Expressions.cs
- _UncName.cs
- FacetDescriptionElement.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- PieceNameHelper.cs
- FontDifferentiator.cs
- ScopelessEnumAttribute.cs
- ListViewItem.cs
- DataKey.cs
- AsyncOperationManager.cs
- Util.cs
- QfeChecker.cs
- XmlQualifiedName.cs
- InputReport.cs
- FileDetails.cs
- WebResourceAttribute.cs
- ControlSerializer.cs
- CompilerTypeWithParams.cs
- XmlSchemaSimpleContentExtension.cs
- WinCategoryAttribute.cs
- DataRelationCollection.cs
- AutomationEvent.cs
- ImageMapEventArgs.cs
- XmlDataFileEditor.cs
- AssemblyNameEqualityComparer.cs
- CompilerWrapper.cs
- DataGridAddNewRow.cs
- KnownColorTable.cs
- Triplet.cs
- DataGridViewAutoSizeModeEventArgs.cs
- DeclarationUpdate.cs
- MarkerProperties.cs
- SharedHttpsTransportManager.cs
- LabelDesigner.cs
- BinHexEncoder.cs
- PenContexts.cs
- SchemaType.cs
- DirectoryGroupQuery.cs
- SHA1.cs
- PropertyIDSet.cs
- NamespaceQuery.cs
- InternalRelationshipCollection.cs
- KeyEventArgs.cs
- ErrorView.xaml.cs
- ReadOnlyDataSource.cs
- EncryptedData.cs
- SqlBulkCopyColumnMappingCollection.cs
- Rfc2898DeriveBytes.cs
- D3DImage.cs
- SqlTypeSystemProvider.cs
- SafeNativeMethodsOther.cs
- PropertyGrid.cs
- OperandQuery.cs
- WebServiceErrorEvent.cs
- AppDomainUnloadedException.cs
- TreeNodeMouseHoverEvent.cs
- DataGridViewColumnEventArgs.cs
- selecteditemcollection.cs
- AmbientProperties.cs