Module Lwt_bytes
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt
:DkSDKProject_DeclareAvailable(lwt CONSTRAINT "= 5.6.1" FINDLIBS lwt lwt.unix) DkSDKProject_MakeAvailable(lwt)
Add the
Findlib::lwt
library to any desired targets insrc/*/CMakeLists.txt
:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::lwt)
Click your IDE's
Build
button
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install lwt.5.6.1
Edit your
dune-project
and add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (lwt (>= 5.6.1))))
Then run:
dune build *.opam # if this fails, run: dune build
Edit your
<package>.opam
file and add:depends: [ # ... existing dependencies ... "lwt" {>= "5.6.1"} ]
Then run:
opam install . --deps-only
FINALLY, add the lwt.unix
library to any desired (library)
and/or (executable)
targets in your **/dune
files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
lwt.unix))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
lwt.unix))
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 offset offset
in buffer
.
val
set :
t
->
``int
->
``char
->
unit
get buffer offset value
changes the value of the byte at offset
offset
in buffer
to value
.
Conversions
val
of_bytes : ``bytes
->
t
of_bytes buf
returns a newly allocated byte array with the same
contents as buf
.
val
of_string : ``string
->
t
of_string buf
returns a newly allocated byte array with the same
contents as buf
.
val
to_bytes :
t
->
bytes
to_bytes buf
returns newly allocated bytes with the same contents as
buf
.
val
to_string :
t
->
string
to_string buf
returns a newly allocated string with the same contents
as buf
.
Copying
blit buf1 ofs1 buf2 ofs2 len
copies len
bytes from buf1
starting
at offset ofs1
to buf2
starting at offset ofs2
.
val
blit_from_string : ``string
->
``int
->
t
->
``int
->
``int
->
unit
Same as blit
but the first buffer is a String.t
instead
of a byte array.
val
blit_from_bytes : ``bytes
->
``int
->
t
->
``int
->
``int
->
unit
Same as blit
but the first buffer is a Bytes.t
instead
of a byte array.
val
blit_to_bytes :
t
->
``int
->
``bytes
->
``int
->
``int
->
unit
Same as blit
but the second buffer is a Bytes.t
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_from_string : ``string
->
``int
->
t
->
``int
->
``int
->
unit
Same as Lwt_bytes.blit_from_string
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.
proxy buffer offset length
creates a ``proxy''. The returned byte
array share the data of buffer
but with different bounds.
extract buffer offset length
creates a new byte array of length
length
and copy the length
bytes of buffer
at offset
into it.
Filling
val
fill :
t
->
``int
->
``int
->
``char
->
unit
fill buffer offset length value
puts value
in all length
bytes of
buffer
starting at offset offset
.
IOs
The following functions behave similarly to the ones in
Lwt_unix
, except they use byte arrays instead of
Bytes.t
, and they never perform extra copies of the data.
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
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 descriptor fd
to an
array of bytes.
val
mapped :
t
->
bool
mapped buffer
returns true
iff buffer
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.
madvise buffer pos len advice
advises the kernel how the program will
use the memory mapped file between pos
and pos + len
.
This call is not available on windows.
val
page_size : int
Size of pages.
val
mincore :
t
->
``int
->
``bool array``
->
unit
mincore buffer offset states
tests whether the given pages are in the
system memory (the RAM). The offset
argument must be a multiple of
page_size
. states
is used to store the result;
each cases is true
if the corresponding page is in RAM and false
otherwise.
This call is not available on windows and cygwin.
wait_mincore buffer offset
waits until the page containing the byte at
offset offset
is in RAM.
This functions is not available on windows and cygwin.