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
- CommentEmitter.cs
- Rfc4050KeyFormatter.cs
- DoubleAnimationClockResource.cs
- StringWriter.cs
- BookmarkEventArgs.cs
- QilInvoke.cs
- SplineKeyFrames.cs
- InfoCardListRequest.cs
- NetworkStream.cs
- InfoCardSymmetricCrypto.cs
- TreeNodeBindingCollection.cs
- SiteOfOriginContainer.cs
- DataGridViewColumn.cs
- ExpandableObjectConverter.cs
- SubclassTypeValidatorAttribute.cs
- TemplateBuilder.cs
- FormViewDeleteEventArgs.cs
- DocumentViewerBaseAutomationPeer.cs
- AlphabeticalEnumConverter.cs
- _NativeSSPI.cs
- DataObjectCopyingEventArgs.cs
- MatrixCamera.cs
- CodeCastExpression.cs
- HuffCodec.cs
- sortedlist.cs
- VectorAnimation.cs
- HyperLink.cs
- CommandID.cs
- DataServiceRequestOfT.cs
- CFGGrammar.cs
- securitycriticaldataClass.cs
- InputBindingCollection.cs
- DataGridViewDataConnection.cs
- ObjectNotFoundException.cs
- RawUIStateInputReport.cs
- PeerToPeerException.cs
- ParseElementCollection.cs
- UndoManager.cs
- CustomAttribute.cs
- UpdateProgress.cs
- HtmlInputSubmit.cs
- PreservationFileReader.cs
- Triplet.cs
- StrokeNode.cs
- RectKeyFrameCollection.cs
- UncommonField.cs
- __Error.cs
- ServiceModelEnumValidator.cs
- AssertFilter.cs
- WebPartConnectionsEventArgs.cs
- DetailsView.cs
- HtmlTableCell.cs
- ConfigXmlAttribute.cs
- Journaling.cs
- ConsoleCancelEventArgs.cs
- PropertyGridView.cs
- WindowsEditBoxRange.cs
- ControllableStoryboardAction.cs
- WebConfigurationManager.cs
- DataGridViewUtilities.cs
- Query.cs
- ComEventsMethod.cs
- BindingManagerDataErrorEventArgs.cs
- CreateParams.cs
- AppDomainUnloadedException.cs
- InputReport.cs
- CfgParser.cs
- AttachedPropertyMethodSelector.cs
- GridErrorDlg.cs
- FilterableAttribute.cs
- PackWebRequestFactory.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- XmlDataSource.cs
- httpstaticobjectscollection.cs
- HostingPreferredMapPath.cs
- MSAAEventDispatcher.cs
- HitTestWithGeometryDrawingContextWalker.cs
- ExceptionHandlerDesigner.cs
- MenuEventArgs.cs
- unsafeIndexingFilterStream.cs
- ToolStripGrip.cs
- GenerateHelper.cs
- DataSourceUtil.cs
- BufferedMessageData.cs
- EllipseGeometry.cs
- ADRoleFactoryConfiguration.cs
- QuaternionAnimationUsingKeyFrames.cs
- HtmlControlDesigner.cs
- ArrayConverter.cs
- TextBoxRenderer.cs
- WebReferencesBuildProvider.cs
- COM2PropertyBuilderUITypeEditor.cs
- ApplicationFileParser.cs
- EventLogEntryCollection.cs
- DirectionalLight.cs
- ScaleTransform3D.cs
- MatchNoneMessageFilter.cs
- FaultDescriptionCollection.cs
- XmlConvert.cs
- WhitespaceRuleReader.cs