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
- XmlSchemaSimpleTypeUnion.cs
- ActivityValidator.cs
- SecurityTokenValidationException.cs
- FeatureSupport.cs
- DBProviderConfigurationHandler.cs
- SizeLimitedCache.cs
- QueryStringConverter.cs
- LOSFormatter.cs
- HtmlTextArea.cs
- ValidationHelper.cs
- configsystem.cs
- GridViewAutoFormat.cs
- ExitEventArgs.cs
- HtmlHead.cs
- XslAst.cs
- FontNamesConverter.cs
- BaseValidator.cs
- ConnectionPointCookie.cs
- TreeView.cs
- IDReferencePropertyAttribute.cs
- Pair.cs
- GPPOINTF.cs
- OracleParameter.cs
- ExeContext.cs
- RowsCopiedEventArgs.cs
- RawAppCommandInputReport.cs
- Code.cs
- DataGridGeneralPage.cs
- LookupNode.cs
- HandlerBase.cs
- SvcMapFileLoader.cs
- MaterialGroup.cs
- EntityDataSourceSelectedEventArgs.cs
- ListViewSelectEventArgs.cs
- ExpressionValueEditor.cs
- TrustLevelCollection.cs
- BeginStoryboard.cs
- ObfuscateAssemblyAttribute.cs
- GroupBox.cs
- cryptoapiTransform.cs
- XmlDataProvider.cs
- NameObjectCollectionBase.cs
- ReferenceTypeElement.cs
- UTF7Encoding.cs
- ObjectSet.cs
- ModelUIElement3D.cs
- SignedPkcs7.cs
- ToolboxControl.cs
- EdmScalarPropertyAttribute.cs
- QueryContinueDragEvent.cs
- SqlCacheDependency.cs
- SafeHGlobalHandleCritical.cs
- OracleConnectionString.cs
- QueryParameter.cs
- FunctionDescription.cs
- Enlistment.cs
- BidOverLoads.cs
- SQLBinary.cs
- ButtonPopupAdapter.cs
- ExtensionQuery.cs
- Dump.cs
- DesignObjectWrapper.cs
- x509store.cs
- CacheMode.cs
- SingleObjectCollection.cs
- TaskFileService.cs
- XmlDomTextWriter.cs
- Ppl.cs
- SessionStateSection.cs
- CollectionViewSource.cs
- SkewTransform.cs
- CompositeCollectionView.cs
- IsolatedStorageFileStream.cs
- DbConnectionOptions.cs
- QilLoop.cs
- ConfigurationStrings.cs
- DiscoveryClientReferences.cs
- SmtpNetworkElement.cs
- ClosableStream.cs
- DoubleAnimationBase.cs
- RootContext.cs
- XmlBaseWriter.cs
- ProfileProvider.cs
- XmlSchemaValidator.cs
- WebScriptServiceHost.cs
- StringAnimationUsingKeyFrames.cs
- SafeCryptContextHandle.cs
- MsmqChannelFactoryBase.cs
- TextOptions.cs
- SecurityKeyIdentifierClause.cs
- SimpleApplicationHost.cs
- _NetRes.cs
- ScriptManagerProxy.cs
- GridViewItemAutomationPeer.cs
- NotFiniteNumberException.cs
- BaseTemplateParser.cs
- BasicCellRelation.cs
- TypedTableBase.cs
- OdbcRowUpdatingEvent.cs
- StaticResourceExtension.cs