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
- SurrogateDataContract.cs
- SafeWaitHandle.cs
- Timer.cs
- MediaCommands.cs
- AssemblyAttributes.cs
- StyleModeStack.cs
- TextEndOfLine.cs
- ContentType.cs
- InteropBitmapSource.cs
- ResourcesGenerator.cs
- WebBrowser.cs
- SystemWebCachingSectionGroup.cs
- ConstructorArgumentAttribute.cs
- ValidatingReaderNodeData.cs
- PerspectiveCamera.cs
- Formatter.cs
- XmlSortKeyAccumulator.cs
- XmlNodeChangedEventArgs.cs
- DiscoveryInnerClientManaged11.cs
- sqlpipe.cs
- SqlBuffer.cs
- PageStatePersister.cs
- TraceHandler.cs
- ProcessInfo.cs
- Highlights.cs
- StorageSetMapping.cs
- MyContact.cs
- ScriptControlManager.cs
- ImageSource.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- TimeoutHelper.cs
- TextElementAutomationPeer.cs
- WindowPattern.cs
- IdnElement.cs
- RelationshipEndCollection.cs
- StringBuilder.cs
- TcpClientSocketManager.cs
- WindowInteractionStateTracker.cs
- Scripts.cs
- SendingRequestEventArgs.cs
- NullableConverter.cs
- SqlBuilder.cs
- TabletCollection.cs
- ClientSideProviderDescription.cs
- RoutedEvent.cs
- PageCatalogPart.cs
- UnhandledExceptionEventArgs.cs
- SelfIssuedAuthProofToken.cs
- SpellerInterop.cs
- ZoneLinkButton.cs
- WinFormsSpinner.cs
- TemplateLookupAction.cs
- InfiniteIntConverter.cs
- EncodedStreamFactory.cs
- MembershipSection.cs
- OleDbConnectionFactory.cs
- PathGradientBrush.cs
- sqlpipe.cs
- UTF8Encoding.cs
- TreeNodeSelectionProcessor.cs
- ConfigXmlComment.cs
- TabPage.cs
- VoiceInfo.cs
- PolicyStatement.cs
- SignedInfo.cs
- PrePrepareMethodAttribute.cs
- AndCondition.cs
- MimeTypePropertyAttribute.cs
- ObjectStateManager.cs
- DateTimeFormat.cs
- RuleElement.cs
- CLSCompliantAttribute.cs
- ReferenceConverter.cs
- WebPartsPersonalization.cs
- SchemaMapping.cs
- _LocalDataStoreMgr.cs
- DrawListViewColumnHeaderEventArgs.cs
- ChildrenQuery.cs
- XmlCountingReader.cs
- BaseCollection.cs
- XPathScanner.cs
- SocketInformation.cs
- DependencyPropertyDescriptor.cs
- FrameworkObject.cs
- MSAANativeProvider.cs
- WhereQueryOperator.cs
- ArgumentNullException.cs
- ReflectionUtil.cs
- ToolStripItemEventArgs.cs
- InstanceDataCollectionCollection.cs
- Matrix3DConverter.cs
- AnnotationStore.cs
- XslCompiledTransform.cs
- NavigationProgressEventArgs.cs
- SrgsGrammarCompiler.cs
- COM2EnumConverter.cs
- SoapElementAttribute.cs
- ForEachAction.cs
- XmlChildEnumerator.cs
- MonthCalendarDesigner.cs