Module Lwt_bytes
Byte arrays
type t
= (char, Stdlib.Bigarray.int8_unsigned_elt, Stdlib.Bigarray.c_layout) Stdlib.Bigarray.Array1.t
Type of array of bytes.
val create : int -> t
Creates a new byte array of the given size.
val length : t -> int
Returns the length of the given byte array.
Access
val get : t -> int -> char
get buffer offset
returns the byte at offsetoffset
inbuffer
.
val set : t -> int -> char -> unit
get buffer offset value
changes the value of the byte at offsetoffset
inbuffer
tovalue
.
Conversions
val of_bytes : bytes -> t
of_bytes buf
returns a newly allocated byte array with the same contents asbuf
.
val of_string : string -> t
of_string buf
returns a newly allocated byte array with the same contents asbuf
.
val to_bytes : t -> bytes
to_bytes buf
returns newly allocated bytes with the same contents asbuf
.
val to_string : t -> string
to_string buf
returns a newly allocated string with the same contents asbuf
.
Copying
val blit : t -> int -> t -> int -> int -> unit
blit buf1 ofs1 buf2 ofs2 len
copieslen
bytes frombuf1
starting at offsetofs1
tobuf2
starting at offsetofs2
.
val blit_from_bytes : bytes -> int -> t -> int -> int -> unit
Same as
blit
but the first buffer is a string instead of a byte array.
val blit_to_bytes : t -> int -> bytes -> int -> int -> unit
Same as
blit
but the second buffer is a string instead of a byte array.
val unsafe_blit_from_bytes : bytes -> int -> t -> int -> int -> unit
Same as
Lwt_bytes.blit_from_bytes
but without bounds checking.
val unsafe_blit_to_bytes : t -> int -> bytes -> int -> int -> unit
Same as
Lwt_bytes.blit_to_bytes
but without bounds checking.
val proxy : t -> int -> int -> t
proxy buffer offset length
creates a ``proxy''. The returned byte array share the data ofbuffer
but with different bounds.
Filling
val fill : t -> int -> int -> char -> unit
fill buffer offset length value
putsvalue
in alllength
bytes ofbuffer
starting at offsetoffset
.
IOs
val read : Lwt_unix.file_descr -> t -> int -> int -> int Lwt.t
val write : Lwt_unix.file_descr -> t -> int -> int -> int Lwt.t
val recv : Lwt_unix.file_descr -> t -> int -> int -> Unix.msg_flag list -> int Lwt.t
Not implemented on Windows.
val send : Lwt_unix.file_descr -> t -> int -> int -> Unix.msg_flag list -> int Lwt.t
Not implemented on Windows.
val recvfrom : Lwt_unix.file_descr -> t -> int -> int -> Unix.msg_flag list -> (int * Unix.sockaddr) Lwt.t
Not implemented on Windows.
val sendto : Lwt_unix.file_descr -> t -> int -> int -> Unix.msg_flag list -> Unix.sockaddr -> int Lwt.t
Not implemented on Windows.
type io_vector
=
{
iov_buffer : t;
iov_offset : int;
iov_length : int;
}
val io_vector : buffer:t -> offset:int -> length:int -> io_vector
val recv_msg : socket:Lwt_unix.file_descr -> io_vectors:io_vector list -> (int * Unix.file_descr list) Lwt.t
Not implemented on Windows.
- deprecated
val send_msg : socket:Lwt_unix.file_descr -> io_vectors:io_vector list -> fds:Unix.file_descr list -> int Lwt.t
Not implemented on Windows.
- deprecated
Memory mapped files
val map_file : fd:Unix.file_descr -> ?pos:int64 -> shared:bool -> ?size:int -> unit -> t
map_file ~fd ?pos ~shared ?size ()
maps the file descriptorfd
to an array of bytes.
val mapped : t -> bool
mapped buffer
returnstrue
iffbuffer
is a memory mapped file.
type advice
=
|
MADV_NORMAL
|
MADV_RANDOM
|
MADV_SEQUENTIAL
|
MADV_WILLNEED
|
MADV_DONTNEED
|
MADV_MERGEABLE
|
MADV_UNMERGEABLE
|
MADV_HUGEPAGE
|
MADV_NOHUGEPAGE
Type of advise that can be sent to the kernel by the program. See the manual madvise(2) for a description of each.
val madvise : t -> int -> int -> advice -> unit
madvise buffer pos len advice
advises the kernel how the program will use the memory mapped file betweenpos
andpos + len
.This call is not available on windows.
val mincore : t -> int -> bool array -> unit
mincore buffer offset states
tests whether the given pages are in the system memory (the RAM). Theoffset
argument must be a multiple ofpage_size
.states
is used to store the result; each cases istrue
if the corresponding page is in RAM andfalse
otherwise.This call is not available on windows and cygwin.