package async_unix

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file signal.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
open Core
open Import
include Core.Signal

let handle_default `Do_not_use_with_async = assert false
let ignore `Do_not_use_with_async = assert false

module Scheduler = Raw_scheduler

let the_one_and_only = Scheduler.the_one_and_only

let handle ?stop ts ~f =
  let scheduler = the_one_and_only () in
  let signal_manager = scheduler.signal_manager in
  let handler =
    Signal_manager.install_handler
      signal_manager
      ts
      (unstage (Scheduler.preserve_execution_context f))
  in
  Option.iter stop ~f:(fun stop ->
    upon stop (fun () -> Signal_manager.remove_handler signal_manager handler))
;;

let terminating = [ alrm; hup; int; term; usr1; usr2 ]

let manage_by_async ts =
  let scheduler = the_one_and_only () in
  let signal_manager = scheduler.signal_manager in
  List.iter ts ~f:(fun t ->
    Signal_manager.manage_but_keep_default_behavior signal_manager t)
;;

let is_managed_by_async t =
  let scheduler = the_one_and_only () in
  let signal_manager = scheduler.signal_manager in
  Signal_manager.is_managing signal_manager t
;;
OCaml

Innovation. Community. Security.