Пример #1
0
        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();
        }
Пример #2
0
        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;
        }
Пример #4
0
        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();
        }