internal void SetupData() { Configuration = QueryPipelineConfiguration.instance; var memoryOptions = MARSMemoryOptions.instance; Data = new ParallelGroupData(memoryOptions.QueryDataCapacity); // make sure that we refresh references to arrays when they have been resized behind the scenes Data.OnResize += WireStages; var memberCapacityMultiplier = memoryOptions.SetMemberCapacityMultiplier; MemberData = new ParallelGroupMemberData(memoryOptions.QueryDataCapacity * memberCapacityMultiplier); MemberData.OnResize += WireStages; // insert a blank stage to represent the idle part of the cycle Stages.Add(null); MemberTraitCacheStage = SetupMemberTraitCacheStage(); RelationTraitCacheStage = SetupRelationTraitCacheStage(); MemberConditionRatingStage = SetupMemberMatchRating(); IncompleteGroupFilterStage = SetupIncompleteGroupFilter(); MemberMatchIntersectionStage = SetupMatchIntersection(); MemberTraitRequirementStage = SetupTraitFilterStage(); MemberDataAvailabilityStage = SetupAvailabilityCheckStage(); MemberMatchReductionStage = SetupMatchReduction(); GroupRelationRatingStage = SetupRelationRatingStage(); FilterRelationMembersStage = SetupFilterRelationMembersStage(); MatchSearchStage = SetupMatchSearchStage(); MarkDataUsedStage = SetupMarkUsedStage(); MemberResultFillStage = SetupQueryResultFill(); GroupResultFillStage = SetupSetQueryResultFill(); AcquireHandlingStage = SetupAcquireHandlingStage(); }
internal ConditionMatchRatingStage SetupMemberMatchRating() { var stage = new ConditionMatchRatingStage(new MatchRatingDataTransform()); WireConditionMatchRatingStage(stage); Stages.Add(stage); return(stage); }
void WireMatchRatingStage(ConditionMatchRatingStage stage) { var transform = stage.Transformation; transform.Input1 = Data.Conditions; transform.Input2 = Data.CachedTraits; transform.Output = Data.ConditionRatings; }
void WireConditionMatchRatingStage(ConditionMatchRatingStage stage) { var transform = stage.Transformation; transform.WorkingIndices = MemberData.FilteredAcquiringIndices; transform.Input1 = MemberData.Conditions; transform.Input2 = MemberData.CachedTraits; transform.Output = MemberData.ConditionRatings; }
internal ConditionMatchRatingStage SetupMatchRating() { var dataTransform = new MatchRatingDataTransform { WorkingIndices = Data.FilteredAcquiringIndices, }; var stage = new ConditionMatchRatingStage(dataTransform); WireMatchRatingStage(stage); return(stage); }
internal void SetupData() { configuration = QueryPipelineConfiguration.instance; Data = new ParallelQueryData(MARSMemoryOptions.instance.QueryDataCapacity); Data.OnResize += WireStages; CacheTraitReferencesStage = SetupTraitCacheStage(); ConditionRatingStage = SetupMatchRating(); FindMatchProposalsStage = SetupMatchIntersection(); DataAvailabilityStage = SetupAvailabilityCheckStage(); TraitFilterStage = SetupTraitFilterStage(); MatchReductionStage = SetupMatchReduction(); BestStandaloneMatchStage = SetupBestStandaloneMatchStage(); ResultFillStage = SetupQueryResultFill(); MarkUsedStage = SetupMarkUsedStage(); AcquireHandlingStage = SetupAcquireHandlingStage(); }