udphole

Basic UDP wormhole proxy
git clone git://git.finwo.net/app/udphole
Log | Files | Refs | README | LICENSE

resp.h (1259B)


      1 #ifndef UDPHOLE_RESP_H
      2 #define UDPHOLE_RESP_H
      3 
      4 #include <stddef.h>
      5 
      6 #define RESPT_SIMPLE  0
      7 #define RESPT_ERROR   1
      8 #define RESPT_BULK    2
      9 #define RESPT_INT      3
     10 #define RESPT_ARRAY    4
     11 
     12 typedef struct resp_object resp_object;
     13 struct resp_object {
     14   int type;
     15   union {
     16     char *s;
     17     long long i;
     18     struct { resp_object *elem; size_t n; } arr;
     19   } u;
     20 };
     21 
     22 void resp_free(resp_object *o);
     23 
     24 resp_object *resp_deep_copy(const resp_object *o);
     25 
     26 resp_object *resp_map_get(const resp_object *o, const char *key);
     27 
     28 const char *resp_map_get_string(const resp_object *o, const char *key);
     29 
     30 void resp_map_set(resp_object *map, const char *key, resp_object *value);
     31 
     32 resp_object *resp_read(int fd);
     33 
     34 resp_object *resp_read_buf(const char *buf, size_t len);
     35 
     36 int resp_encode_array(int argc, const resp_object *const *argv, char **out_buf, size_t *out_len);
     37 
     38 int resp_serialize(const resp_object *o, char **out_buf, size_t *out_len);
     39 
     40 resp_object *resp_array_init(void);
     41 
     42 int resp_array_append_obj(resp_object *destination, resp_object *value);
     43 
     44 int resp_array_append_simple(resp_object *destination, const char *str);
     45 int resp_array_append_bulk(resp_object *destination, const char *str);
     46 int resp_array_append_int(resp_object *destination, long long i);
     47 
     48 #endif