Skip to content

Commit

Permalink
refactor: use dyn_vec_serializer
Browse files Browse the repository at this point in the history
  • Loading branch information
shaojunda committed Sep 3, 2019
1 parent 51d5f95 commit 7b0525a
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 199 deletions.
37 changes: 0 additions & 37 deletions lib/ckb/serializers/args_serializer.rb

This file was deleted.

38 changes: 0 additions & 38 deletions lib/ckb/serializers/cell_deps_serializer.rb

This file was deleted.

28 changes: 27 additions & 1 deletion lib/ckb/serializers/dyn_vec_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
module CKB
module Serializers
module DynVecSerializer
class DynVecSerializer
include BaseSerializer

UINT32_CAPACITY = 4

def initialize(items, item_serializer)
@items = items
@items_count = items.count
@item_serializer = item_serializer
end

private

attr_reader :items, :items_count, :item_serializer

def layout
if items_count == 0
[UINT32_CAPACITY].pack("V").unpack1("H*")
Expand All @@ -23,6 +31,24 @@ def body
item_layouts
end

def offsets
offset0 = (items_count + 1) * UINT32_CAPACITY
offsets = [offset0]
items.each.with_index(1) do |_item, index|
break if items[index].nil?

offsets << offset0 += item_serializer.new(items[index - 1]).capacity
end

offsets
end

def item_layouts
return "" if items_count == 0

items.map { |item| item_serializer.new(item).serialize }.join("")
end

def full_length_hex
full_length = (items_count + 1) * UINT32_CAPACITY + body_capacity
[full_length].pack("V").unpack1("H*")
Expand Down
38 changes: 0 additions & 38 deletions lib/ckb/serializers/inputs_serializer.rb

This file was deleted.

37 changes: 0 additions & 37 deletions lib/ckb/serializers/outputs_data_serializer.rb

This file was deleted.

38 changes: 0 additions & 38 deletions lib/ckb/serializers/outputs_serializer.rb

This file was deleted.

8 changes: 4 additions & 4 deletions lib/ckb/serializers/raw_transaction_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ class RawTransactionSerializer
# @param transaction [CKB::Types::Transaction]
def initialize(transaction)
@version_serializer = VersionSerializer.new(transaction.version)
@cell_deps_serializer = CellDepsSerializer.new(transaction.cell_deps)
@cell_deps_serializer = DynVecSerializer.new(transaction.cell_deps, CellDepSerializer)
@header_deps_serializer = HeaderDepsSerializer.new(transaction.header_deps)
@inputs_serializer = InputsSerializer.new(transaction.inputs)
@outputs_serializer = OutputsSerializer.new(transaction.outputs)
@outputs_data_serializer = OutputsDataSerializer.new(transaction.outputs_data)
@inputs_serializer = DynVecSerializer.new(transaction.inputs, InputSerializer)
@outputs_serializer = DynVecSerializer.new(transaction.outputs, OutputSerializer)
@outputs_data_serializer = DynVecSerializer.new(transaction.outputs_data, OutputDataSerializer)
@items_count = 6
end

Expand Down
2 changes: 1 addition & 1 deletion lib/ckb/serializers/script_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class ScriptSerializer
def initialize(script)
@code_hash_serializer = CodeHashSerializer.new(script.code_hash)
@hash_type_serializer = HashTypeSerializer.new(script.hash_type)
@args_serializer = ArgsSerializer.new(script.args)
@args_serializer = DynVecSerializer.new(script.args, ArgSerializer)
@items_count = 3
end

Expand Down
5 changes: 0 additions & 5 deletions lib/ckb/serializers/serializers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,20 @@
require_relative "code_hash_serializer"
require_relative "hash_type_serializer"
require_relative "arg_serializer"
require_relative "args_serializer"
require_relative "script_serializer"
require_relative "version_serializer"
require_relative "header_dep_serializer"
require_relative "header_deps_serializer"
require_relative "dep_type_serializer"
require_relative "cell_dep_serializer"
require_relative "cell_deps_serializer"
require_relative "since_serializer"
require_relative "input_serializer"
require_relative "inputs_serializer"
require_relative "capacity_serializer"
require_relative "output_serializer"
require_relative "outputs_serializer"
require_relative "out_point_tx_hash_serializer"
require_relative "out_point_index_serializer"
require_relative "out_point_serializer"
require_relative "output_data_serializer"
require_relative "outputs_data_serializer"
require_relative "raw_transaction_serializer"

module CKB
Expand Down

0 comments on commit 7b0525a

Please sign in to comment.