Movatterモバイル変換


[0]ホーム

URL:


packagearchi-async

  1. Overview
  2. Docs

You can search for identifiers within the package.

in-package search v0.2.0

Async runtime for Archi, a library for managing the lifecycle of stateful components in OCaml

Install

Dune Dependency

Authors

Maintainers

Sources

archi-0.2.0.tbz
sha256=5b33fc94a73d211f6d7ccebe750ac52b03962029fc90e35bb47329de611799c0
sha512=f5fb600a19cd6d0022ae0f6519ee7473c773c32fb6cb15638b26a9a08c320ddfafd1a12e8ed3207727a7e8c893ef0ac6eadd57a0f8a935da40e79cabf86b11be

Description

Published:24 May 2022

README

archi

Archi is an OCaml library for managing the lifecycle of stateful components and their dependencies.

Installation

$ opam install archi # choose your preferred runtime: archi-lwt archi-async

Usage & Examples

TODO, read themli file for now.

Examples

The design of this library is heavily inspired by thecomponent library for Clojure. The terminology is similar, and so is the API.

open Lwt.Infixopen Archi_lwtmodule Database = struct  type db = { handle : int }  let start () =    Format.eprintf "Started DB.@.";    Lwt_result.return { handle = 42 }  let stop _db = Lwt_io.eprintlf "Stopped DB.%!"  let component = Component.make ~start ~stopendmodule WebServer = struct  type t = Lwt_io.server  let start () _db : (t, string) Lwt_result.t =    let listen_address = Unix.(ADDR_INET (inet_addr_loopback, 3000)) in    Lwt_io.establish_server_with_client_address listen_address (fun _ _ ->        Lwt_io.printlf "Client connected.%!")    >>= fun server ->    Format.eprintf "Started server.@.";    Lwt_result.return server  let stop server =    Lwt_io.shutdown_server server >>= fun () ->    Lwt_io.eprintlf "Stopped server.%!"  let component =    Component.using ~start ~stop ~dependencies:[ Database.component ]endlet system =  System.make [ "db", Database.component; "server", WebServer.component ]let main () =  System.start () system >>= fun system ->  match system with  | Ok system ->    let forever, waiter = Lwt.wait () in    Sys.(      set_signal        sigint        (Signal_handle           (fun _ ->             Format.eprintf "SIGINT received, tearing down.@.";             Lwt.async (fun () ->                 System.stop system >|= fun _stopped_system ->                 Lwt.wakeup_later waiter ()))));    forever  | Error error ->    Format.eprintf "ERROR: %s@." error;    exit 1let () = Lwt_main.run (main ())

License & Copyright

Copyright (c) 2020 António Nuno Monteiro

Archi is distributed under the 3-Clause BSD License, seeLICENSE.

Dependencies (4)

  1. async
  2. archi= version
  3. dune>= "2.5"
  4. ocaml>= "4.06"

Dev Dependencies

None

Used by

None

Conflicts

None


[8]ページ先頭

©2009-2025 Movatter.jp