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
- SimpleHandlerBuildProvider.cs
- _SingleItemRequestCache.cs
- RowSpanVector.cs
- HttpApplication.cs
- ProviderBase.cs
- DataGridViewRowsRemovedEventArgs.cs
- Math.cs
- WebBrowserNavigatingEventHandler.cs
- WebPartEditorOkVerb.cs
- CheckBox.cs
- XmlTextReaderImplHelpers.cs
- TemplateColumn.cs
- _AuthenticationState.cs
- SpAudioStreamWrapper.cs
- RewritingSimplifier.cs
- ImageIndexConverter.cs
- PropertyMetadata.cs
- StylusPointPropertyInfo.cs
- ConnectionManagementElement.cs
- ServiceDebugElement.cs
- OleDbCommand.cs
- CodePageUtils.cs
- TranslateTransform3D.cs
- WindowsFormsHelpers.cs
- FrameworkTemplate.cs
- Stroke2.cs
- TargetInvocationException.cs
- ChtmlCalendarAdapter.cs
- CorruptStoreException.cs
- GridViewCellAutomationPeer.cs
- ArgumentValue.cs
- TextRangeEditLists.cs
- AssertSection.cs
- SafeMILHandle.cs
- Signature.cs
- DataControlReference.cs
- SHA512Managed.cs
- FilterableData.cs
- StylusButton.cs
- SynchronizationLockException.cs
- RotateTransform3D.cs
- DataListCommandEventArgs.cs
- StateItem.cs
- InterleavedZipPartStream.cs
- WindowsSolidBrush.cs
- FrameworkElementAutomationPeer.cs
- WebServiceTypeData.cs
- Selector.cs
- HMACSHA384.cs
- AppModelKnownContentFactory.cs
- RequestContextBase.cs
- ParameterBinding.cs
- Table.cs
- XmlRootAttribute.cs
- ComponentEvent.cs
- TextDpi.cs
- ActivityDesignerAccessibleObject.cs
- PieceNameHelper.cs
- CursorInteropHelper.cs
- ClipboardData.cs
- ComboBox.cs
- WebZone.cs
- DockingAttribute.cs
- EventLogRecord.cs
- TypeReference.cs
- DataListCommandEventArgs.cs
- TCEAdapterGenerator.cs
- XmlSchemaExternal.cs
- CodeAttachEventStatement.cs
- DataGridDetailsPresenterAutomationPeer.cs
- Walker.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- PasswordRecovery.cs
- DesigntimeLicenseContext.cs
- PerspectiveCamera.cs
- IntSecurity.cs
- ExternalCalls.cs
- LocalizableAttribute.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- ToolstripProfessionalRenderer.cs
- RefreshEventArgs.cs
- CqlErrorHelper.cs
- XmlC14NWriter.cs
- DispatcherOperation.cs
- LayoutManager.cs
- ToolStripControlHost.cs
- FloaterParagraph.cs
- Compiler.cs
- Location.cs
- FileDialogPermission.cs
- DbProviderManifest.cs
- EncodingStreamWrapper.cs
- GridViewRowEventArgs.cs
- ProfileGroupSettings.cs
- Mutex.cs
- ECDiffieHellmanCng.cs
- HandlerMappingMemo.cs
- SerializationStore.cs
- GacUtil.cs
- DataServices.cs