libjapi  0.3.2
Universal JSON API Library
 All Data Structures Files Functions Variables Typedefs Macros Pages
japi.h
Go to the documentation of this file.
1 
34 #ifndef __JAPI_H__
35 #define __JAPI_H__
36 
37 #include <json-c/json.h>
38 #include <pthread.h>
39 #include <stdbool.h>
40 
41 #include "creadline.h"
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
52 typedef struct __japi_context {
53  void *userptr;
54  uint16_t num_clients;
55  uint16_t max_clients;
56  pthread_mutex_t lock;
57  struct __japi_request *requests;
58  struct __japi_pushsrv_context
59  *push_services;
60  struct __japi_client *clients;
62  bool shutdown;
63  bool init;
64 } japi_context;
65 
71 typedef struct __japi_client {
72  int socket;
74  struct __japi_client *next;
75 } japi_client;
76 
80 typedef void (*japi_req_handler)(japi_context *ctx, json_object *request,
81  json_object *response);
82 
89 typedef struct __japi_request {
90  const char *name;
92  struct __japi_request *next;
93 } japi_request;
94 
105 japi_context *japi_init(void *userptr);
106 
116 int japi_destroy(japi_context *ctx);
117 
136 int japi_register_request(japi_context *ctx, const char *req_name,
137  japi_req_handler req_handler);
138 
149 int japi_start_server(japi_context *ctx, const char *port);
150 
162 int japi_set_max_allowed_clients(japi_context *ctx, uint16_t num);
163 
175 int japi_include_args_in_response(japi_context *ctx, bool include_args);
176 
187 int japi_shutdown(japi_context *ctx);
188 
189 #ifdef __cplusplus
190 }
191 #endif
192 
193 #endif /* __JAPI_H__ */
bool shutdown
Definition: japi.h:62
uint16_t max_clients
Definition: japi.h:55
uint16_t num_clients
Definition: japi.h:54
struct __japi_client * next
Definition: japi.h:74
int socket
Definition: japi.h:72
void(* japi_req_handler)(japi_context *ctx, json_object *request, json_object *response)
JAPI request handler type.
Definition: japi.h:80
int japi_set_max_allowed_clients(japi_context *ctx, uint16_t num)
Set the number of allowed clients.
Definition: japi.c:336
japi_context * japi_init(void *userptr)
Create and initialize a new JAPI context.
Definition: japi.c:288
bool include_args_in_response
Definition: japi.h:61
struct __japi_client * clients
Definition: japi.h:60
struct __japi_request * next
Definition: japi.h:92
JAPI client context.
Definition: japi.h:71
int japi_destroy(japi_context *ctx)
Destroy a JAPI context.
Definition: japi.c:209
Buffer type for storing remaining bytes.
Definition: creadline.h:55
struct __japi_request * requests
Definition: japi.h:57
JAPI request struct.
Definition: japi.h:89
JAPI context struct.
Definition: japi.h:52
struct __japi_pushsrv_context * push_services
Definition: japi.h:58
int japi_include_args_in_response(japi_context *ctx, bool include_args)
Configure context to include request arguments in response.
Definition: japi.c:352
japi_req_handler func
Definition: japi.h:91
Read line from file descriptor.
const char * name
Definition: japi.h:90
int japi_register_request(japi_context *ctx, const char *req_name, japi_req_handler req_handler)
Register a JAPI request handler.
Definition: japi.c:239
int japi_shutdown(japi_context *ctx)
Shutdown the JAPI server.
Definition: japi.c:197
pthread_mutex_t lock
Definition: japi.h:56
int japi_start_server(japi_context *ctx, const char *port)
Start a JAPI server.
Definition: japi.c:482
void * userptr
Definition: japi.h:53
bool init
Definition: japi.h:63
creadline_buf_t crl_buffer
Definition: japi.h:73