Alpha: remove useless carbonated functor

Single carbonated data storage was useless and is buggy. It's simpler to
remove than to fix it.
This commit is contained in:
Pierre Chambart 2018-05-30 16:13:11 +02:00 committed by Benjamin Canou
parent 4c171c72a2
commit 64481a198e
2 changed files with 0 additions and 114 deletions

View File

@ -130,115 +130,6 @@ module Make_single_data_storage (C : Raw_context.T) (N : NAME) (V : VALUE)
end
module Make_single_carbonated_data_storage
(C : Raw_context.T) (N : NAME) (V : CARBONATED_VALUE)
: Single_carbonated_data_storage with type t = C.t
and type value = V.t = struct
type t = C.t
type context = t
type value = V.t
let consume_mem_gas c =
Lwt.return (C.consume_gas c (Gas_limit_repr.read_bytes_cost Z.zero))
include Make_encoder(V)
let existing_size c =
match V.size with
| Fixed len ->
C.mem c N.name >>= fun exists ->
if exists then return len else return 0
| Variable ->
C.get_option c (len_name N.name) >>= function
| None -> return 0
| Some len -> decode_len_value N.name len
let consume_read_gas get c =
match V.size with
| Fixed len ->
Lwt.return (C.consume_gas c (Gas_limit_repr.read_bytes_cost (Z.of_int len)))
| Variable ->
get c (len_name N.name) >>=? fun len ->
decode_len_value N.name len >>=? fun len ->
Lwt.return (C.consume_gas c (Gas_limit_repr.read_bytes_cost (Z.of_int len)))
let consume_write_gas set c v =
match V.size with
| Fixed s ->
Lwt.return (C.consume_gas c (Gas_limit_repr.write_bytes_cost (Z.of_int s))) >>=? fun c ->
return (c, to_bytes v)
| Variable ->
let bytes = to_bytes v in
let len = MBytes.length bytes in
Lwt.return (C.consume_gas c (Gas_limit_repr.write_bytes_cost (Z.of_int len))) >>=? fun c ->
set c (len_name N.name) (encode_len_value bytes) >>=? fun c ->
return (c, bytes)
let consume_remove_gas del c =
match V.size with
| Fixed _ | Variable ->
Lwt.return (C.consume_gas c (Gas_limit_repr.write_bytes_cost Z.zero)) >>=? fun c ->
del c (len_name N.name)
let mem c =
consume_mem_gas c >>=? fun c ->
C.mem c N.name >>= fun res ->
return (C.project c, res)
let get c =
consume_read_gas C.get c >>=? fun c ->
C.get c N.name >>=? fun bytes ->
let key = C.absolute_key c N.name in
Lwt.return (of_bytes ~key bytes) >>=? fun res ->
return (C.project c, res)
let get_option c =
consume_mem_gas c >>=? fun c ->
C.mem c N.name >>= fun exists ->
if exists then
get c >>=? fun (c, r) ->
return (c, Some r)
else
return (C.project c, None)
let init c v =
consume_write_gas C.set c v >>=? fun (c, bytes) ->
C.init c N.name bytes >>=? fun c ->
let size = MBytes.length bytes in
Lwt.return (C.record_bytes_stored c (Int64.of_int size)) >>=? fun c ->
return (C.project c, size)
let set c v =
consume_write_gas C.init c v >>=? fun (c, bytes) ->
existing_size c >>=? fun prev_size ->
C.set c N.name bytes >>=? fun c ->
let size_diff = MBytes.length bytes - prev_size in
Lwt.return (C.record_bytes_stored c (Int64.of_int size_diff)) >>=? fun c ->
return (C.project c, size_diff)
let init_set c v =
let init_set c k v = C.init_set c k v >>= return in
consume_write_gas init_set c v >>=? fun (c, bytes) ->
existing_size c >>=? fun prev_size ->
init_set c N.name bytes >>=? fun c ->
let size_diff = MBytes.length bytes - prev_size in
Lwt.return (C.record_bytes_stored c (Int64.of_int size_diff)) >>=? fun c ->
return (C.project c, size_diff)
let remove c =
let remove c k = C.remove c k >>= return in
consume_remove_gas remove c >>=? fun c ->
existing_size c >>=? fun prev_size ->
remove c N.name >>=? fun c ->
Lwt.return (C.record_bytes_stored c (Int64.of_int ~-prev_size)) >>=? fun c ->
return (C.project c, prev_size)
let delete c =
consume_remove_gas C.delete c >>=? fun c ->
existing_size c >>=? fun prev_size ->
C.delete c N.name >>=? fun c ->
Lwt.return (C.record_bytes_stored c (Int64.of_int ~-prev_size)) >>=? fun c ->
return (C.project c, prev_size)
let set_option c v =
match v with
| None -> remove c
| Some v -> init_set c v
let () =
let open Storage_description in
register_value
~get:(fun c -> get_option c >>=? fun (_, v) -> return v)
(register_named_subcontext C.description N.name)
V.encoding
end
module type INDEX = sig
type t
val path_length: int

View File

@ -21,11 +21,6 @@ module Make_single_data_storage
module Make_carbonated_value (V : VALUE) : CARBONATED_VALUE with type t = V.t
module Make_single_carbonated_data_storage
(C : Raw_context.T) (N : NAME) (V : CARBONATED_VALUE)
: Single_carbonated_data_storage with type t = C.t
and type value = V.t
module type INDEX = sig
type t
val path_length: int