blob: 59c97eb4a4d3855765b8b0f7605a687183132b0c (
plain)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#define DEFAULT_CFG "monster.cfg"
struct _channel_value;
struct _backend_channel;
struct _backend_instance;
typedef int (*mmbackend_handle_event)(struct _backend_channel* c, struct _channel_value v);
typedef struct _backend_channel* (*mmbackend_parse_channel)(char* spec);
typedef int (*mmbackend_configure)(char* option, char* value);
typedef struct _backend_instance* (*mmbackend_create_instance)();
typedef int (*mmbackend_configure_instance)(char* option, char* value);
typedef int (*mmbackend_process_fd)(int fd, void** impl);
typedef int (*mmbackend_shutdown)();
typedef struct _channel_value {
double raw_double;
uint64_t raw_u64;
double normalised;
} channel_value;
typedef struct /*_mm_backend*/ {
char* name;
mmbackend_configure conf;
mmbackend_create_instance create;
mmbackend_configure_instance conf_instance;
mmbackend_parse_channel channel;
mmbackend_handle_event handle;
mmbackend_process_fd process;
mmbackend_shutdown shutdown;
} backend;
typedef struct _backend_instance {
backend* backend;
size_t ident;
void* impl;
char* name;
} instance;
typedef struct _backend_channel {
instance* instance;
size_t ident;
void* impl;
} channel;
typedef struct /*_mm_managed_fd*/ {
int fd;
backend* backend;
void* impl;
} managed_fd;
backend* mm_backend_register(backend b);
int mm_manage_fd(int fd, backend* b, int manage, void* impl);
int mm_channel_event(channel* c, channel_value v);
|