Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Linq / Parallel / Partitioning / PartitionedStream.cs / 1305376 / PartitionedStream.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ // // PartitionedStream.cs // //[....] // // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- using System.Collections.Generic; using System.Diagnostics.Contracts; namespace System.Linq.Parallel { ////// A partitioned stream just partitions some data source using an extensible /// partitioning algorithm and exposes a set of N enumerators that are consumed by /// their ordinal index [0..N). It is used to build up a set of streaming computations. /// At instantiation time, the actual data source to be partitioned is supplied; and /// then the caller will layer on top additional enumerators to represent phases in the /// computation. Eventually, a merge can then schedule enumeration of all of the /// individual partitions in parallel by obtaining references to the individual /// partition streams. /// /// This type has a set of subclasses which implement different partitioning algorithms, /// allowing us to easily plug in different partitioning techniques as needed. The type /// supports wrapping IEnumerables and IEnumerators alike, with some preference for the /// former as many partitioning algorithms are more intelligent for certain data types. /// ////// internal class PartitionedStream { protected QueryOperatorEnumerator [] m_partitions; // Partitions exposed by this object. private readonly IComparer m_keyComparer; // Comparer for order keys. private readonly OrdinalIndexState m_indexState; // State of the order keys. internal PartitionedStream(int partitionCount, IComparer keyComparer, OrdinalIndexState indexState) { Contract.Assert(partitionCount > 0); m_partitions = new QueryOperatorEnumerator [partitionCount]; m_keyComparer = keyComparer; m_indexState = indexState; } //---------------------------------------------------------------------------------------- // Retrieves or sets a partition for the given index. // // Assumptions: // The index falls within the legal range of the enumerator, i.e. 0 <= value < count. // internal QueryOperatorEnumerator this[int index] { get { Contract.Assert(m_partitions != null); Contract.Assert(0 <= index && index < m_partitions.Length, "index out of bounds"); return m_partitions[index]; } set { Contract.Assert(m_partitions != null); Contract.Assert(value != null); Contract.Assert(0 <= index && index < m_partitions.Length, "index out of bounds"); m_partitions[index] = value; } } //--------------------------------------------------------------------------------------- // Retrives the number of partitions. // public int PartitionCount { get { Contract.Assert(m_partitions != null); return m_partitions.Length; } } //--------------------------------------------------------------------------------------- // The comparer for the order keys. // internal IComparer KeyComparer { get { return m_keyComparer; } } //--------------------------------------------------------------------------------------- // State of the order keys. // internal OrdinalIndexState OrdinalIndexState { get { return m_indexState; } } } } // 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
- ResXResourceReader.cs
- NullableFloatMinMaxAggregationOperator.cs
- Thumb.cs
- AttributeQuery.cs
- Decorator.cs
- MemberMemberBinding.cs
- EntityModelSchemaGenerator.cs
- DBConnection.cs
- CachedFontFamily.cs
- Expr.cs
- DebugManager.cs
- SimpleBitVector32.cs
- TransformProviderWrapper.cs
- WindowsProgressbar.cs
- Attributes.cs
- SrgsElementList.cs
- ping.cs
- ProcessStartInfo.cs
- EntityDataSourceStatementEditor.cs
- ConnectivityStatus.cs
- ErrorRuntimeConfig.cs
- SourceItem.cs
- RegexStringValidator.cs
- CommonDialog.cs
- RowUpdatingEventArgs.cs
- MDIWindowDialog.cs
- ClientConfigurationSystem.cs
- ButtonRenderer.cs
- TreeViewImageIndexConverter.cs
- EntityExpressionVisitor.cs
- ISessionStateStore.cs
- JsonServiceDocumentSerializer.cs
- BaseTemplateBuildProvider.cs
- QilReference.cs
- XmlNotation.cs
- Image.cs
- EnumConverter.cs
- PropertyGroupDescription.cs
- CollectionChange.cs
- ModuleBuilderData.cs
- RegexCode.cs
- UrlMappingsModule.cs
- CqlLexerHelpers.cs
- BuildManager.cs
- InternalMappingException.cs
- BinaryWriter.cs
- DataRecordInternal.cs
- StringWriter.cs
- RegisteredScript.cs
- DATA_BLOB.cs
- DrawItemEvent.cs
- SystemBrushes.cs
- BitmapEffect.cs
- RuntimeComponentFilter.cs
- LinqDataSource.cs
- PersonalizationProvider.cs
- TableItemStyle.cs
- CanExecuteRoutedEventArgs.cs
- mediapermission.cs
- SHA512.cs
- BindStream.cs
- Semaphore.cs
- EmptyStringExpandableObjectConverter.cs
- ImageList.cs
- BaseCollection.cs
- BinaryFormatterWriter.cs
- HintTextConverter.cs
- ParentUndoUnit.cs
- DbProviderSpecificTypePropertyAttribute.cs
- SelectedDatesCollection.cs
- RawMouseInputReport.cs
- AuthenticateEventArgs.cs
- InlinedAggregationOperator.cs
- SetterBaseCollection.cs
- NetTcpSecurity.cs
- UrlPropertyAttribute.cs
- NamespaceDisplay.xaml.cs
- DropSource.cs
- MembershipUser.cs
- __Filters.cs
- ByteAnimation.cs
- RTTypeWrapper.cs
- RelOps.cs
- XmlMembersMapping.cs
- DocumentSequence.cs
- EncoderNLS.cs
- QilStrConcat.cs
- httpstaticobjectscollection.cs
- ConnectionProviderAttribute.cs
- NotifyCollectionChangedEventArgs.cs
- EntityProxyFactory.cs
- AgileSafeNativeMemoryHandle.cs
- PageAsyncTask.cs
- DummyDataSource.cs
- Schema.cs
- PassportAuthentication.cs
- XhtmlBasicLinkAdapter.cs
- HandlerMappingMemo.cs
- SecurityMode.cs
- DateTimeOffsetStorage.cs