-
capnp
-
-
capnp.unix
Library
Module
Module type
Parameter
Class
Class type
include MessageSig.SLICE
with type 'a segment_t := 'a Segment.t
and type 'a message_t := 'a Message.t
type 'cap t = {
msg : 'cap Message.t;
(*Identifies the message of interest
*)segment : 'cap Segment.t;
(*Segment within message housing these bytes
*)segment_id : int;
(*Index of the segment
*)start : int;
(*Starting byte of the slice
*)len : int;
(*Length of the slice, in bytes
*)
}
Type t
represents a contiguous range of bytes associated with a single segment of a message.
val alloc : MessageSig.rw Message.t -> int -> MessageSig.rw t
alloc m size
reserves size
bytes of space within message m
. This may result in extending the message with an additional segment; if storage cannot be allocated for a new segment, an exception is raised. Note that the allocated slices always begin on an eight-byte boundary.
val alloc_in_segment :
MessageSig.rw Message.t ->
int ->
int ->
MessageSig.rw t option
alloc_in_segment m seg_id size
attempts to reserve size
bytes of space within segment seg_id
of message m
. Allocation will fail if the segment is full.
get_segment slice
gets the message segment associated with the slice
.
val get_end : 'cap t -> int
get_end slice
computes slice.start
+ slice.len
.
val readonly : 'cap t -> MessageSig.ro t
readonly s
obtains a view of slice s
which is read-only qualified.
get_uintXX s ofs
reads an unsigned integer of the specified width, starting at byte offset ofs
within the slice
.
val get_uint8 : 'cap t -> int -> int
val get_uint16 : 'cap t -> int -> int
get_intXX s ofs
reads a signed integer of the specified width, starting at byte offset ofs
within the slice
.
val get_int8 : 'cap t -> int -> int
val get_int16 : 'cap t -> int -> int
set_uintXX s ofs val
writes the value of the width-restricted unsigned integer val
into the read/write-qualified slice
, starting at byte offset ofs
.
val set_uint8 : MessageSig.rw t -> int -> int -> unit
val set_uint16 : MessageSig.rw t -> int -> int -> unit
val set_uint32 : MessageSig.rw t -> int -> Uint32.t -> unit
val set_uint64 : MessageSig.rw t -> int -> Uint64.t -> unit
set_intXX s ofs val
writes the value of the width-restricted signed integer val
into the read/write-qualified slice
, starting at byte offset ofs
.
val set_int8 : MessageSig.rw t -> int -> int -> unit
val set_int16 : MessageSig.rw t -> int -> int -> unit
val set_int32 : MessageSig.rw t -> int -> Int32.t -> unit
val set_int64 : MessageSig.rw t -> int -> Int64.t -> unit
val blit :
src:'cap t ->
src_pos:int ->
dst:MessageSig.rw t ->
dst_pos:int ->
len:int ->
unit
blit ~src ~src_pos ~dst ~dst_pos ~len
copies len
bytes from the source slice (beginning at src_pos
) to the destination slice (beginning at dst_pos
).
As blit
, but the destination is a bytes
buffer.
val blit_from_string :
src:string ->
src_pos:int ->
dst:MessageSig.rw t ->
dst_pos:int ->
len:int ->
unit
As blit
, but the source is a string
buffer.
val zero_out : MessageSig.rw t -> pos:int -> len:int -> unit
zero_out ~pos ~len slice
sets len
bytes of the slice
to zero, beginning at byte offset pos
.