Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cleanup_service.rb « gitaly_client « gitlab « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 8e412a9b3ef084bae6c55c27091b7dce55263ef8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# frozen_string_literal: true

module Gitlab
  module GitalyClient
    class CleanupService
      attr_reader :repository, :gitaly_repo, :storage

      # 'repository' is a Gitlab::Git::Repository
      def initialize(repository)
        @repository = repository
        @gitaly_repo = repository.gitaly_repository
        @storage = repository.storage
      end

      def apply_bfg_object_map(io)
        first_request = Gitaly::ApplyBfgObjectMapRequest.new(repository: gitaly_repo)

        enum = Enumerator.new do |y|
          y.yield first_request

          while data = io.read(RepositoryService::MAX_MSG_SIZE)
            y.yield Gitaly::ApplyBfgObjectMapRequest.new(object_map: data)
          end
        end

        GitalyClient.call(
          storage,
          :cleanup_service,
          :apply_bfg_object_map,
          enum,
          timeout: GitalyClient.no_timeout
        )
      end
    end
  end
end