Sha256: 8ad59c3fb1883c3a8bb36c34971c66497154e74200e370e8c314316796f9fb4b

Contents?: true

Size: 1.32 KB

Versions: 7

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 map_point [Serega::SeregaMapPoint] current map point
          # @param object_serializer[Serega::SeregaObjectSerializer] current object serializer
          #
          # @return [Serega::SeregaPlugins::Batch::SeregaBatchLoader] Batch Loader
          #
          def get(map_point, object_serializer)
            batch_loaders[map_point] ||= self.class.serializer_class::SeregaBatchLoader.new(object_serializer, map_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

7 entries across 7 versions & 1 rubygems

Version Path
serega-0.10.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.9.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.8.3 lib/serega/plugins/batch/lib/loaders.rb
serega-0.8.2 lib/serega/plugins/batch/lib/loaders.rb
serega-0.8.1 lib/serega/plugins/batch/lib/loaders.rb
serega-0.8.0 lib/serega/plugins/batch/lib/loaders.rb
serega-0.7.0 lib/serega/plugins/batch/lib/loaders.rb