Sha256: d11b90a997e907621614b1f6810008c787afbb95741efd6649178afd187deee4

Contents?: true

Size: 1.32 KB

Versions: 13

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

class Serega
  module SeregaPlugins
    module Batch
      # Lists batch loaders registered during serialization
      class SeregaBatchLoaders
        # BatchLoaders instance methods
        module InstanceMethods
          #
          # Initializes or fetches already initialized batch loader
          #
          # @param plan_point [Serega::SeregaPlanPoint] current plan point
          # @param object_serializer[Serega::SeregaObjectSerializer] current object serializer
          #
          # @return [Serega::SeregaPlugins::Batch::SeregaBatchLoader] Batch Loader
          #
          def get(plan_point, object_serializer)
            batch_loaders[plan_point] ||= self.class.serializer_class::SeregaBatchLoader.new(object_serializer, plan_point)
          end

          #
          # Loads all registered batches and removes them from registered list
          #
          def load_all
            return unless defined?(@batch_loaders)

            while (_point, batch_loader = batch_loaders.shift)
              batch_loader.load
            end
          end

          private

          def batch_loaders
            @batch_loaders ||= {}.compare_by_identity
          end
        end

        include InstanceMethods
        extend Serega::SeregaHelpers::SerializerClassHelper
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
serega-0.21.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.20.1 lib/serega/plugins/batch/lib/loaders.rb
serega-0.20.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.19.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.18.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.17.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.16.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.15.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.14.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.12.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.11.2 lib/serega/plugins/batch/lib/loaders.rb
serega-0.11.1 lib/serega/plugins/batch/lib/loaders.rb
serega-0.11.0 lib/serega/plugins/batch/lib/loaders.rb