Open Broadcaster Software
Free, open source software for live streaming and recording
signal.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Hugh Bailey <obs.jim@gmail.com>
3  *
4  * Permission to use, copy, modify, and distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #pragma once
18 
19 #include "../util/c99defs.h"
20 
21 #include "calldata.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /*
28  * Signal handler
29  *
30  * This is used to create a signal handler which can broadcast events
31  * to one or more callbacks connected to a signal.
32  */
33 
34 struct signal_handler;
35 typedef struct signal_handler signal_handler_t;
36 typedef void (*global_signal_callback_t)(void *, const char *, calldata_t *);
37 typedef void (*signal_callback_t)(void *, calldata_t *);
38 
41 
43  const char *signal_decl);
44 
45 static inline bool signal_handler_add_array(signal_handler_t *handler,
46  const char **signal_decls)
47 {
48  bool success = true;
49  if (!signal_decls)
50  return false;
51 
52  while (*signal_decls)
53  if (!signal_handler_add(handler, *(signal_decls++)))
54  success = false;
55 
56  return success;
57 }
58 
60  const char *signal,
61  signal_callback_t callback, void *data);
63  const char *signal,
64  signal_callback_t callback, void *data);
66  const char *signal,
67  signal_callback_t callback, void *data);
68 
70  global_signal_callback_t callback,
71  void *data);
73  global_signal_callback_t callback,
74  void *data);
75 
77 
78 EXPORT void signal_handler_signal(signal_handler_t *handler, const char *signal,
79  calldata_t *params);
80 
81 #ifdef __cplusplus
82 }
83 #endif
Definition: calldata.h:46
EXPORT signal_handler_t * signal_handler_create(void)
EXPORT void signal_handler_connect(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)
EXPORT void signal_handler_remove_current(void)
#define EXPORT
Definition: c99defs.h:37
EXPORT void signal_handler_connect_ref(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)
EXPORT bool signal_handler_add(signal_handler_t *handler, const char *signal_decl)
EXPORT void signal_handler_disconnect_global(signal_handler_t *handler, global_signal_callback_t callback, void *data)
EXPORT void signal_handler_disconnect(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)
EXPORT void signal_handler_connect_global(signal_handler_t *handler, global_signal_callback_t callback, void *data)
EXPORT void signal_handler_signal(signal_handler_t *handler, const char *signal, calldata_t *params)
struct signal_handler signal_handler_t
Definition: signal.h:35
#define success(stat, call)
Definition: mac-helpers.h:13
EXPORT void signal_handler_destroy(signal_handler_t *handler)
void(* global_signal_callback_t)(void *, const char *, calldata_t *)
Definition: signal.h:36
void(* signal_callback_t)(void *, calldata_t *)
Definition: signal.h:37