aboutsummaryrefslogtreecommitdiffstats
path: root/lib/concepts/Object.ml
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/concepts/Object.ml7
-rw-r--r--lib/concepts/Object.mli4
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 :