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
- EmbeddedMailObject.cs
- ClientBuildManagerTypeDescriptionProviderBridge.cs
- nulltextnavigator.cs
- KnownBoxes.cs
- ListBase.cs
- SecurityToken.cs
- GroupBoxRenderer.cs
- BookmarkEventArgs.cs
- WebPartDisplayModeCancelEventArgs.cs
- WebPartDisplayMode.cs
- EpmContentDeSerializerBase.cs
- MetadataArtifactLoaderFile.cs
- DocumentSequenceHighlightLayer.cs
- DiscardableAttribute.cs
- SymmetricKeyWrap.cs
- ConfigurationErrorsException.cs
- LayoutEditorPart.cs
- ColumnBinding.cs
- TextPatternIdentifiers.cs
- TypeLoadException.cs
- FillBehavior.cs
- HtmlShimManager.cs
- OdbcUtils.cs
- OneToOneMappingSerializer.cs
- HttpVersion.cs
- XmlValidatingReader.cs
- DataGridColumnFloatingHeader.cs
- BindingSource.cs
- HtmlForm.cs
- ChangeBlockUndoRecord.cs
- NamespaceEmitter.cs
- InplaceBitmapMetadataWriter.cs
- SqlClientMetaDataCollectionNames.cs
- hwndwrapper.cs
- CounterCreationData.cs
- ClonableStack.cs
- WCFBuildProvider.cs
- ComponentResourceKeyConverter.cs
- FilterEventArgs.cs
- FileLogRecordHeader.cs
- TypeDescriptionProvider.cs
- TdsValueSetter.cs
- CaseStatementProjectedSlot.cs
- WinFormsSpinner.cs
- Point3DConverter.cs
- SqlUtils.cs
- wpf-etw.cs
- DisableDpiAwarenessAttribute.cs
- SecurityHeader.cs
- Schedule.cs
- SystemDiagnosticsSection.cs
- HwndHost.cs
- WSSecurityOneDotOneReceiveSecurityHeader.cs
- ListSortDescription.cs
- RoleExceptions.cs
- CompareValidator.cs
- SatelliteContractVersionAttribute.cs
- TaskFileService.cs
- BlockCollection.cs
- Rotation3DKeyFrameCollection.cs
- RadioButtonAutomationPeer.cs
- LocalIdKeyIdentifierClause.cs
- VariableQuery.cs
- UrlAuthFailureHandler.cs
- SecurityResources.cs
- ControlAdapter.cs
- DtrList.cs
- ObjectList.cs
- MultiByteCodec.cs
- SourceSwitch.cs
- SystemInformation.cs
- RegisteredScript.cs
- RealizationContext.cs
- SchemaTableOptionalColumn.cs
- ContainerParaClient.cs
- Metafile.cs
- DBSchemaTable.cs
- InstanceDescriptor.cs
- TableLayoutCellPaintEventArgs.cs
- CompilerGlobalScopeAttribute.cs
- QueueProcessor.cs
- XmlSerializerObjectSerializer.cs
- CompilerError.cs
- NameValueCollection.cs
- PropertyTab.cs
- XXXInfos.cs
- WebContext.cs
- ComplexPropertyEntry.cs
- MasterPageParser.cs
- SystemDiagnosticsSection.cs
- QueueProcessor.cs
- TextEndOfParagraph.cs
- _SafeNetHandles.cs
- WindowsTooltip.cs
- FrameworkElement.cs
- CodeObjectCreateExpression.cs
- OdbcDataReader.cs
- HostExecutionContextManager.cs
- ClientTargetCollection.cs
- XPathNodeInfoAtom.cs