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
- SubpageParaClient.cs
- CharConverter.cs
- FileVersionInfo.cs
- SqlCrossApplyToCrossJoin.cs
- ChannelSinkStacks.cs
- Ipv6Element.cs
- SecurityCredentialsManager.cs
- RuntimeArgumentHandle.cs
- IncrementalHitTester.cs
- ObjectDisposedException.cs
- XmlWellformedWriter.cs
- ParameterBuilder.cs
- AddInContractAttribute.cs
- AspNetPartialTrustHelpers.cs
- ResolveNameEventArgs.cs
- EditCommandColumn.cs
- SelfIssuedAuthAsymmetricKey.cs
- DefaultAuthorizationContext.cs
- X509SecurityToken.cs
- CaseStatement.cs
- ViewStateException.cs
- PositiveTimeSpanValidatorAttribute.cs
- SqlXml.cs
- PasswordRecovery.cs
- WmfPlaceableFileHeader.cs
- TaskFileService.cs
- RelatedView.cs
- SimpleBitVector32.cs
- TableRowGroup.cs
- ToolTipAutomationPeer.cs
- Debugger.cs
- HttpListenerException.cs
- NonClientArea.cs
- RowTypePropertyElement.cs
- MbpInfo.cs
- EllipseGeometry.cs
- TcpProcessProtocolHandler.cs
- QilScopedVisitor.cs
- GuidConverter.cs
- DataObject.cs
- MatrixStack.cs
- IIS7WorkerRequest.cs
- PropertyDescriptor.cs
- XsltLibrary.cs
- TriState.cs
- FormDesigner.cs
- SymLanguageVendor.cs
- CapabilitiesPattern.cs
- PerformanceCounterCategory.cs
- RadioButtonBaseAdapter.cs
- PeerNameRegistration.cs
- PopOutPanel.cs
- TreeNodeStyleCollection.cs
- PeerTransportListenAddressConverter.cs
- PropertyGroupDescription.cs
- TimelineGroup.cs
- BindingContext.cs
- ObjectViewListener.cs
- ThreadPool.cs
- DocumentManager.cs
- WebBrowserContainer.cs
- SecurityVersion.cs
- SemanticBasicElement.cs
- SchemaObjectWriter.cs
- AttributeAction.cs
- IgnorePropertiesAttribute.cs
- CodeThrowExceptionStatement.cs
- HtmlEncodedRawTextWriter.cs
- ToolStrip.cs
- DataGridGeneralPage.cs
- PeerNearMe.cs
- ParameterToken.cs
- VersionPair.cs
- XmlQueryCardinality.cs
- XpsFilter.cs
- SchemaContext.cs
- GPPOINTF.cs
- WindowsToolbar.cs
- DocobjHost.cs
- HttpContextServiceHost.cs
- RecordManager.cs
- PageClientProxyGenerator.cs
- Security.cs
- PropertyChangingEventArgs.cs
- FormViewModeEventArgs.cs
- DataSetViewSchema.cs
- LoginUtil.cs
- RotateTransform3D.cs
- BulletedListDesigner.cs
- WebServiceClientProxyGenerator.cs
- TemplateLookupAction.cs
- MissingSatelliteAssemblyException.cs
- SelectionHighlightInfo.cs
- TraceSection.cs
- GlyphRunDrawing.cs
- PreApplicationStartMethodAttribute.cs
- DescendentsWalkerBase.cs
- ImageConverter.cs
- OdbcCommandBuilder.cs
- XmlHelper.cs