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
- BooleanProjectedSlot.cs
- ProfessionalColors.cs
- Decoder.cs
- WebDisplayNameAttribute.cs
- DataGridViewUtilities.cs
- BuilderPropertyEntry.cs
- HandlerFactoryWrapper.cs
- StateManagedCollection.cs
- SerializerWriterEventHandlers.cs
- MethodRental.cs
- DataGridViewCellConverter.cs
- WorkflowOperationFault.cs
- Base64Encoder.cs
- StringBlob.cs
- UrlPath.cs
- cache.cs
- HtmlTextViewAdapter.cs
- InputScopeAttribute.cs
- AddToCollection.cs
- MiniConstructorInfo.cs
- SimpleNameService.cs
- DeviceSpecificChoice.cs
- ClassicBorderDecorator.cs
- DataSvcMapFile.cs
- SelectionRange.cs
- DataGridTextBoxColumn.cs
- Exceptions.cs
- XmlAnyElementAttributes.cs
- TextBoxDesigner.cs
- ScaleTransform.cs
- Process.cs
- ImpersonationOption.cs
- ManagedFilter.cs
- cryptoapiTransform.cs
- ApplicationDirectoryMembershipCondition.cs
- GeometryHitTestParameters.cs
- TableItemPatternIdentifiers.cs
- ReadOnlyDictionary.cs
- SqlMethodTransformer.cs
- Publisher.cs
- AsyncOperationContext.cs
- ControlBuilderAttribute.cs
- MenuDesigner.cs
- ServiceNameCollection.cs
- RawStylusActions.cs
- SeekStoryboard.cs
- documentation.cs
- EndPoint.cs
- SortQuery.cs
- TextDecorationCollection.cs
- COM2ColorConverter.cs
- ReversePositionQuery.cs
- GlobalizationSection.cs
- PropertyGridCommands.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- TransformProviderWrapper.cs
- PrinterSettings.cs
- SiteMapNodeCollection.cs
- Funcletizer.cs
- PreservationFileReader.cs
- AutomationAttributeInfo.cs
- ProviderIncompatibleException.cs
- XmlIgnoreAttribute.cs
- MsmqInputChannelListenerBase.cs
- ZoneIdentityPermission.cs
- CanonicalXml.cs
- DesignerLabelAdapter.cs
- PartialCachingAttribute.cs
- SequenceDesignerAccessibleObject.cs
- control.ime.cs
- EDesignUtil.cs
- invalidudtexception.cs
- LineGeometry.cs
- LookupNode.cs
- KnownTypeAttribute.cs
- NullableDecimalSumAggregationOperator.cs
- LinqDataSourceView.cs
- DataViewManagerListItemTypeDescriptor.cs
- ping.cs
- ScrollPatternIdentifiers.cs
- MobileSysDescriptionAttribute.cs
- UncommonField.cs
- Metafile.cs
- MarginsConverter.cs
- TypeSchema.cs
- HelpProvider.cs
- DataDesignUtil.cs
- ResizeGrip.cs
- GridItem.cs
- Helper.cs
- IQueryable.cs
- DataGridRow.cs
- InfoCardConstants.cs
- Int64.cs
- ConnectionOrientedTransportChannelFactory.cs
- CustomExpression.cs
- TextBoxAutoCompleteSourceConverter.cs
- MemberRelationshipService.cs
- ColorContext.cs
- SqlBulkCopyColumnMapping.cs