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 (*signal_callback_t)(void*, calldata_t*);
37 
40 
42  const char *signal_decl);
43 
44 static inline bool signal_handler_add_array(signal_handler_t *handler,
45  const char **signal_decls)
46 {
47  bool success = true;
48  if (!signal_decls)
49  return false;
50 
51  while (*signal_decls)
52  if (!signal_handler_add(handler, *(signal_decls++)))
53  success = false;
54 
55  return success;
56 }
57 
59  const char *signal, signal_callback_t callback, void *data);
61  const char *signal, signal_callback_t callback, void *data);
62 
63 EXPORT void signal_handler_signal(signal_handler_t *handler, const char *signal,
64  calldata_t *params);
65 
66 #ifdef __cplusplus
67 }
68 #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)
#define EXPORT
Definition: c99defs.h:53
EXPORT bool signal_handler_add(signal_handler_t *handler, const char *signal_decl)
EXPORT void signal_handler_disconnect(signal_handler_t *handler, const char *signal, 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
EXPORT void signal_handler_destroy(signal_handler_t *handler)
void(* signal_callback_t)(void *, calldata_t *)
Definition: signal.h:36