Class: Gitlab::GitalyClient::DiffStitcher
- Inherits:
-
Object
- Object
- Gitlab::GitalyClient::DiffStitcher
- Includes:
- Enumerable
- Defined in:
- lib/gitlab/gitaly_client/diff_stitcher.rb
Instance Method Summary collapse
- #each ⇒ Object
-
#initialize(rpc_response_param) ⇒ DiffStitcher
constructor
A new instance of DiffStitcher.
Constructor Details
#initialize(rpc_response_param) ⇒ DiffStitcher
Returns a new instance of DiffStitcher.
10 11 12 |
# File 'lib/gitlab/gitaly_client/diff_stitcher.rb', line 10 def initialize(rpc_response_param) @rpc_response = rpc_response_param end |
Instance Method Details
#each ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/gitlab/gitaly_client/diff_stitcher.rb', line 14 def each current_diff = nil @rpc_response.each do |diff_msg| if current_diff.nil? diff_params = diff_msg.to_h.slice(*GitalyClient::Diff::ATTRS) # gRPC uses frozen strings by default, and we need to have an unfrozen string as it # gets processed further down the line. So we unfreeze the first chunk of the patch # in case it's the only chunk we receive for this diff. diff_params[:patch] = diff_msg.raw_patch_data.dup current_diff = GitalyClient::Diff.new(diff_params) else current_diff.patch = "#{current_diff.patch}#{diff_msg.raw_patch_data}" end if diff_msg.end_of_patch yield current_diff current_diff = nil end end end |