Module Capnp_unix.IO

Contents

Instructions: Use this module in your project

In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:

  1. Add the following to your project's dependencies/CMakeLists.txt:

    Copy
    DkSDKProject_DeclareAvailable(capnp
        CONSTRAINT "= "
        FINDLIBS capnp capnp.unix)
    DkSDKProject_MakeAvailable(capnp)
  2. Add the Findlib::capnp library to any desired targets in src/*/CMakeLists.txt:

    Copy
    target_link_libraries(YourPackage_YourLibraryName
         # ... existing libraries, if any ...
         Findlib::capnp)
  3. Click your IDE's Build button

Not using DkSDK?

FIRST, do one or all of the following:

  1. Run:

    Copy
    opam install capnp.null
  2. Edit your dune-project and add:

    Copy
    (package
      (name YourExistingPackage)
      (depends
      ; ... existing dependenices ...
      (capnp (>= ))))

    Then run:

    Copy
    dune build *.opam # if this fails, run: dune build
  3. Edit your <package>.opam file and add:

    Copy
    depends: [
      # ... existing dependencies ...
      "capnp" {>= ""}
    ]

    Then run:

    Copy
    opam install . --deps-only

FINALLY, add the capnp.unix library to any desired (library)and/or (executable) targets in your **/dune files:

Copy
(library
  (name YourLibrary)
  ; ... existing library options ...
  (libraries
    ; ... existing libraries ...
    capnp.unix))

(executable
  (name YourExecutable)
  ; ... existing executable options ...
  (libraries
    ; ... existing libraries ...
    capnp.unix))
exception Unsupported_message_frame
module WriteContext:sig...end
module ReadContext:sig...end
valcreate_write_context_for_fd : ``?restart:bool-> ``compression:Capnp.Codecs.compression_t -> Unix.file_descr -> Unix.file_descr WriteContext.t

create_write_context_for_fd ~compression fd creates a context for writing messages to the given file descriptor using the specified compression format. If restart is set to true (default), then writes failing with error code Unix.EINTR will be automatically restarted.

val create_write_context_for_channel : ``compression:Capnp.Codecs.compression_t -> out_channel -> out_channel WriteContext.t

create_write_context_for_channel ~compression chan creates a context for writing messages to the given buffered output channel using the specified compression format.

valcreate_read_context_for_fd : ``?restart:bool-> ``compression:Capnp.Codecs.compression_t -> Unix.file_descr -> Unix.file_descr ReadContext.t

create_read_context_for_fd ~compression fd creates a context for reading messages from the given file descriptor using the specified compression method. If restart is set to true (default), then writes failing with error code Unix.EINTR will be automatically restarted.

val create_read_context_for_channel : ``compression:Capnp.Codecs.compression_t -> in_channel -> in_channel ReadContext.t

create_read_context_for_channel ~compression chan creates a context for reading messages from the given input channel using the specified compression method.

valwrite_message_to_fd : ``?restart:bool-> ``compression:Capnp.Codecs.compression_t -> 'cap Capnp.Message.BytesMessage.Message.t -> Unix.file_descr -> unit

write_message_to_fd ~compression message fd writes the specified message to the given file descriptor, using the specified compression method. If restart is set to true (default), then writes failing with error code Unix.EINTR will be automatically restarted.

EAGAIN/EWOULDBLOCK are handled automatically.

  • raises Unix.Unix_error

    if a write fails

val write_message_to_channel : ``compression:Capnp.Codecs.compression_t -> 'cap Capnp.Message.BytesMessage.Message.t -> out_channel -> unit

write_message_to_channel ~compression message chan writes the specified message to the given buffered I/O channel, using the specified compression method.

valwrite_message_to_file : ``?perm:int-> ``compression:Capnp.Codecs.compression_t -> 'cap Capnp.Message.BytesMessage.Message.t ->``string-> unit

write_message_to_file ~compression message filename writes the specified message to a file with the given filename, using the requested compression method. The optional perm specifies the file creation mode, in case a new file must be created.

valread_single_message_from_fd : ``?restart:bool-> ``compression:Capnp.Codecs.compression_t -> Unix.file_descr -> Capnp.Message.rw Capnp.Message.BytesMessage.Message.t option

read_single_message_from_fd ~compression fd attempts to read a single message from the specified file descriptor, using the given compression method. If restart is set to true (default), then writes failing with error code Unix.EINTR will be automatically restarted.

EAGAIN/EWOULDBLOCK are handled automatically.

This function is appropriate to use only when 0 or 1 messages are expected to be available from the descriptor; if additional messages are available, some message data could be lost. Use create_XXX_read_context_for_fd to correctly handle a stream of messages.

  • returns

    Some message, or None if end-of-file was reached before a message could be decoded.

  • raises Unix.Unix_error

    if a read fails

  • raises Unsupported_message_frame

    if the frame header describes a segment count or segment size that is too large for the implementation

val read_single_message_from_channel : ``compression:Capnp.Codecs.compression_t -> in_channel -> Capnp.Message.rw Capnp.Message.BytesMessage.Message.t option

read_single_message_from_channel ~compression chan attempts to read a single message from the specified input channel, using the given compression method.

This function is appropriate to use only when 0 or 1 messages are expected to be available from the channel; if additional messages are available, some message data could be lost. Use create_XXX_read_context_for_channel to correctly handle a stream of messages.

  • returns

    Some message, or None if end-of-file was reached before a message could be decoded.

  • raises Unsupported_message_frame

    if the frame header describes a segment count or segment size that is too large for the implementation

val read_message_from_file : ``compression:Capnp.Codecs.compression_t ->``string-> Capnp.Message.rw Capnp.Message.BytesMessage.Message.t option

read_message_from_file ~compression filename attempts to read a message from the file with the given filename, using the requested compression method.

  • returns

    Some message, or None if the file does not contain a complete message frame.