diff options
Diffstat (limited to '')
| -rw-r--r-- | lib/concepts/Object.ml | 7 | ||||
| -rw-r--r-- | lib/concepts/Object.mli | 4 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/concepts/Object.ml b/lib/concepts/Object.ml index aacbda6..22fb14a 100644 --- a/lib/concepts/Object.ml +++ b/lib/concepts/Object.ml @@ -6,10 +6,13 @@ module type S = sig type t val equal : t -> t -> bool + val to_bencode : t -> bencode val of_bencode : bencode -> (t, Condition.condition) result + val to_blob : t -> Representation.blob val of_blob : Representation.blob -> (t, Condition.condition) result + val to_bytes : t -> bytes val of_bytes : bytes -> (t, Condition.condition) result end @@ -48,11 +51,13 @@ module Codec = struct let to_bencode object_ = Bencode.Tagged (B.tag, Bencode.Dict (B.fields object_)) let of_bencode = function - | Bencode.Tagged (tag, (Bencode.Dict _ as data)) when Char.equal tag B.tag -> B.of_fields data + | Bencode.Tagged (tag, (Bencode.Dict _ as data)) when Char.equal tag B.tag -> + B.of_fields data | _ -> Error (B.malformed ()) let to_blob object_ = to_bencode object_ |> Bencode.to_blob let of_blob blob = Bencode.of_blob blob |> Utilities.Result.fmap of_bencode + let to_bytes object_ = to_blob object_ |> Representation.bytes_of_blob let of_bytes bytes = Bencode.of_bytes bytes |> Utilities.Result.fmap of_bencode end diff --git a/lib/concepts/Object.mli b/lib/concepts/Object.mli index 7b0c4fd..e132673 100644 --- a/lib/concepts/Object.mli +++ b/lib/concepts/Object.mli @@ -4,10 +4,13 @@ module type S = sig type t val equal : t -> t -> bool + val to_bencode : t -> bencode val of_bencode : bencode -> (t, Condition.condition) result + val to_blob : t -> Representation.blob val of_blob : Representation.blob -> (t, Condition.condition) result + val to_bytes : t -> bytes val of_bytes : bytes -> (t, Condition.condition) result end @@ -17,6 +20,7 @@ module type OBJECT = S module Field : sig val string : string -> bencode val address : Hash.hash -> bencode + val require_string : string -> bencode -> (string, Condition.condition) result val require_address : |
