agoo 2.5.5 → 2.5.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of agoo might be problematic. Click here for more details.

Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/README.md +1 -1
  4. data/ext/agoo/agoo.c +4 -3
  5. data/ext/agoo/atomic.h +120 -0
  6. data/ext/agoo/bind.c +52 -52
  7. data/ext/agoo/bind.h +13 -13
  8. data/ext/agoo/con.c +499 -481
  9. data/ext/agoo/con.h +47 -39
  10. data/ext/agoo/debug.c +42 -42
  11. data/ext/agoo/debug.h +1 -1
  12. data/ext/agoo/doc.c +17 -17
  13. data/ext/agoo/doc.h +12 -12
  14. data/ext/agoo/err.c +18 -18
  15. data/ext/agoo/err.h +27 -27
  16. data/ext/agoo/error_stream.c +9 -9
  17. data/ext/agoo/extconf.rb +3 -0
  18. data/ext/agoo/gqlintro.c +43 -43
  19. data/ext/agoo/gqlintro.h +1 -1
  20. data/ext/agoo/gqlvalue.c +131 -131
  21. data/ext/agoo/gqlvalue.h +32 -32
  22. data/ext/agoo/graphql.c +158 -158
  23. data/ext/agoo/graphql.h +34 -33
  24. data/ext/agoo/hook.c +15 -14
  25. data/ext/agoo/hook.h +18 -14
  26. data/ext/agoo/http.c +14 -14
  27. data/ext/agoo/http.h +4 -4
  28. data/ext/agoo/kinds.h +5 -5
  29. data/ext/agoo/log.c +232 -224
  30. data/ext/agoo/log.h +93 -93
  31. data/ext/agoo/method.h +17 -17
  32. data/ext/agoo/page.c +88 -86
  33. data/ext/agoo/page.h +21 -21
  34. data/ext/agoo/pub.c +36 -36
  35. data/ext/agoo/pub.h +23 -23
  36. data/ext/agoo/queue.c +37 -38
  37. data/ext/agoo/queue.h +20 -19
  38. data/ext/agoo/rack_logger.c +13 -13
  39. data/ext/agoo/ready.c +357 -0
  40. data/ext/agoo/ready.h +41 -0
  41. data/ext/agoo/req.c +11 -11
  42. data/ext/agoo/req.h +30 -31
  43. data/ext/agoo/request.c +46 -46
  44. data/ext/agoo/request.h +2 -2
  45. data/ext/agoo/res.c +40 -18
  46. data/ext/agoo/res.h +14 -14
  47. data/ext/agoo/response.c +6 -6
  48. data/ext/agoo/response.h +9 -9
  49. data/ext/agoo/rhook.c +3 -3
  50. data/ext/agoo/rhook.h +1 -1
  51. data/ext/agoo/rlog.c +47 -42
  52. data/ext/agoo/rlog.h +0 -1
  53. data/ext/agoo/rresponse.c +33 -33
  54. data/ext/agoo/rresponse.h +1 -1
  55. data/ext/agoo/rserver.c +184 -175
  56. data/ext/agoo/rserver.h +2 -2
  57. data/ext/agoo/rupgraded.c +41 -41
  58. data/ext/agoo/rupgraded.h +3 -3
  59. data/ext/agoo/sdl.c +80 -80
  60. data/ext/agoo/sdl.h +1 -1
  61. data/ext/agoo/seg.h +2 -2
  62. data/ext/agoo/server.c +143 -117
  63. data/ext/agoo/server.h +43 -42
  64. data/ext/agoo/sse.c +7 -7
  65. data/ext/agoo/sse.h +4 -4
  66. data/ext/agoo/subject.c +5 -5
  67. data/ext/agoo/subject.h +6 -6
  68. data/ext/agoo/text.c +21 -21
  69. data/ext/agoo/text.h +14 -13
  70. data/ext/agoo/upgraded.c +41 -40
  71. data/ext/agoo/upgraded.h +41 -40
  72. data/ext/agoo/websocket.c +42 -42
  73. data/ext/agoo/websocket.h +16 -16
  74. data/lib/agoo/version.rb +1 -1
  75. data/test/static_test.rb +2 -0
  76. metadata +5 -5
  77. data/ext/agoo/log_queue.h +0 -30
  78. data/ext/agoo/sub.c +0 -111
  79. data/ext/agoo/sub.h +0 -36
@@ -16,50 +16,58 @@
16
16
 
17
17
  #define MAX_HEADER_SIZE 8192
18
18
 
19
- struct _Upgraded;
20
- struct _Req;
21
- struct _Res;
22
- struct _Bind;
23
- struct _Queue;
19
+ struct _agooUpgraded;
20
+ struct _agooReq;
21
+ struct _agooRes;
22
+ struct _agooBind;
23
+ struct _agooQueue;
24
24
 
25
- typedef struct _Con {
26
- struct _Con *next;
27
- int sock;
28
- struct _Bind *bind;
29
- struct pollfd *pp;
30
- uint64_t id;
31
- char buf[MAX_HEADER_SIZE];
32
- size_t bcnt;
25
+ typedef struct _agooConLoop {
26
+ struct _agooConLoop *next;
27
+ struct _agooQueue pub_queue;
28
+ pthread_t thread;
29
+ int id;
30
+ // TBD use mutex for head and tail, volatile also
31
+ struct _agooRes *res_head;
32
+ struct _agooRes *res_tail;
33
+
34
+ pthread_mutex_t lock;
35
+
36
+ } *agooConLoop;
37
+
38
+ typedef struct _agooCon {
39
+ struct _agooCon *next;
40
+ int sock;
41
+ struct _agooBind *bind;
42
+ struct pollfd *pp;
43
+ uint64_t id;
44
+ char buf[MAX_HEADER_SIZE];
45
+ size_t bcnt;
33
46
 
34
- ssize_t mcnt; // how much has been read so far
35
- ssize_t wcnt; // how much has been written
47
+ ssize_t mcnt; // how much has been read so far
48
+ ssize_t wcnt; // how much has been written
36
49
 
37
- double timeout;
38
- bool closing;
39
- bool dead;
40
- volatile bool hijacked;
41
- struct _Req *req;
42
- struct _Res *res_head;
43
- struct _Res *res_tail;
50
+ double timeout;
51
+ bool closing;
52
+ bool dead;
53
+ volatile bool hijacked;
54
+ struct _agooReq *req;
55
+ struct _agooRes *res_head;
56
+ struct _agooRes *res_tail;
44
57
 
45
- struct _Upgraded *up; // only set for push connections
46
- } *Con;
58
+ struct _agooUpgraded *up; // only set for push connections
59
+ agooConLoop loop;
60
+ } *agooCon;
47
61
 
48
- typedef struct _ConLoop {
49
- struct _ConLoop *next;
50
- struct _Queue pub_queue;
51
- pthread_t thread;
52
- int id;
53
- } *ConLoop;
54
-
55
- extern Con con_create(Err err, int sock, uint64_t id, struct _Bind *b);
56
- extern void con_destroy(Con c);
57
- extern const char* con_header_value(const char *header, int hlen, const char *key, int *vlen);
62
+ extern agooCon agoo_con_create(agooErr err, int sock, uint64_t id, struct _agooBind *b);
63
+ extern void agoo_con_destroy(agooCon c);
64
+ extern const char* agoo_con_header_value(const char *header, int hlen, const char *key, int *vlen);
58
65
 
59
- extern struct _ConLoop* conloop_create(Err err, int id);
66
+ extern agooConLoop agoo_conloop_create(agooErr err, int id);
67
+ extern void agoo_conloop_destroy(agooConLoop loop);
60
68
 
61
- extern bool con_http_read(Con c);
62
- extern bool con_http_write(Con c);
63
- extern short con_http_events(Con c);
69
+ extern bool agoo_con_http_read(agooCon c);
70
+ extern bool agoo_con_http_write(agooCon c);
71
+ extern short agoo_con_http_events(agooCon c);
64
72
 
65
- #endif /* AGOO_CON_H */
73
+ #endif // AGOO_CON_H
@@ -10,8 +10,8 @@
10
10
 
11
11
  #include "debug.h"
12
12
 
13
- typedef struct _Rec {
14
- struct _Rec *next;
13
+ typedef struct _rec {
14
+ struct _rec *next;
15
15
  void *ptr;
16
16
  const char *type;
17
17
  const char *file;
@@ -21,45 +21,45 @@ typedef struct _Rec {
21
21
  static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
22
22
  static Rec recs = NULL;
23
23
 
24
- atomic_int mem_bind = 0;
25
- atomic_int mem_cb = 0;
26
- atomic_int mem_con = 0;
27
- atomic_int mem_cslot = 0;
28
- atomic_int mem_err_stream = 0;
29
- atomic_int mem_eval_threads = 0;
30
- atomic_int mem_group = 0;
31
- atomic_int mem_graphql_arg = 0;
32
- atomic_int mem_graphql_directive = 0;
33
- atomic_int mem_graphql_field = 0;
34
- atomic_int mem_graphql_link = 0;
35
- atomic_int mem_graphql_slot = 0;
36
- atomic_int mem_graphql_type = 0;
37
- atomic_int mem_graphql_value = 0;
38
- atomic_int mem_group_path = 0;
39
- atomic_int mem_header = 0;
40
- atomic_int mem_hook = 0;
41
- atomic_int mem_hook_pattern = 0;
42
- atomic_int mem_http_slot = 0;
43
- atomic_int mem_log_entry = 0;
44
- atomic_int mem_log_what = 0;
45
- atomic_int mem_log_tid = 0;
46
- atomic_int mem_mime_slot = 0;
47
- atomic_int mem_page = 0;
48
- atomic_int mem_page_msg = 0;
49
- atomic_int mem_page_path = 0;
50
- atomic_int mem_page_slot = 0;
51
- atomic_int mem_pub = 0;
52
- atomic_int mem_qitem = 0;
53
- atomic_int mem_queue_item = 0;
54
- atomic_int mem_rack_logger = 0;
55
- atomic_int mem_req = 0;
56
- atomic_int mem_res = 0;
57
- atomic_int mem_res_body = 0;
58
- atomic_int mem_response = 0;
59
- atomic_int mem_subject = 0;
60
- atomic_int mem_text = 0;
61
- atomic_int mem_to_s = 0;
62
- atomic_int mem_upgraded = 0;
24
+ atomic_int mem_bind = AGOO_ATOMIC_INT_INIT(0);
25
+ atomic_int mem_cb = AGOO_ATOMIC_INT_INIT(0);
26
+ atomic_int mem_con = AGOO_ATOMIC_INT_INIT(0);
27
+ atomic_int mem_cslot = AGOO_ATOMIC_INT_INIT(0);
28
+ atomic_int mem_err_stream = AGOO_ATOMIC_INT_INIT(0);
29
+ atomic_int mem_eval_threads = AGOO_ATOMIC_INT_INIT(0);
30
+ atomic_int mem_group = AGOO_ATOMIC_INT_INIT(0);
31
+ atomic_int mem_graphql_arg = AGOO_ATOMIC_INT_INIT(0);
32
+ atomic_int mem_graphql_directive = AGOO_ATOMIC_INT_INIT(0);
33
+ atomic_int mem_graphql_field = AGOO_ATOMIC_INT_INIT(0);
34
+ atomic_int mem_graphql_link = AGOO_ATOMIC_INT_INIT(0);
35
+ atomic_int mem_graphql_slot = AGOO_ATOMIC_INT_INIT(0);
36
+ atomic_int mem_graphql_type = AGOO_ATOMIC_INT_INIT(0);
37
+ atomic_int mem_graphql_value = AGOO_ATOMIC_INT_INIT(0);
38
+ atomic_int mem_group_path = AGOO_ATOMIC_INT_INIT(0);
39
+ atomic_int mem_header = AGOO_ATOMIC_INT_INIT(0);
40
+ atomic_int mem_hook = AGOO_ATOMIC_INT_INIT(0);
41
+ atomic_int mem_hook_pattern = AGOO_ATOMIC_INT_INIT(0);
42
+ atomic_int mem_http_slot = AGOO_ATOMIC_INT_INIT(0);
43
+ atomic_int mem_log_entry = AGOO_ATOMIC_INT_INIT(0);
44
+ atomic_int mem_log_what = AGOO_ATOMIC_INT_INIT(0);
45
+ atomic_int mem_log_tid = AGOO_ATOMIC_INT_INIT(0);
46
+ atomic_int mem_mime_slot = AGOO_ATOMIC_INT_INIT(0);
47
+ atomic_int mem_page = AGOO_ATOMIC_INT_INIT(0);
48
+ atomic_int mem_page_msg = AGOO_ATOMIC_INT_INIT(0);
49
+ atomic_int mem_page_path = AGOO_ATOMIC_INT_INIT(0);
50
+ atomic_int mem_page_slot = AGOO_ATOMIC_INT_INIT(0);
51
+ atomic_int mem_pub = AGOO_ATOMIC_INT_INIT(0);
52
+ atomic_int mem_qitem = AGOO_ATOMIC_INT_INIT(0);
53
+ atomic_int mem_queue_item = AGOO_ATOMIC_INT_INIT(0);
54
+ atomic_int mem_rack_logger = AGOO_ATOMIC_INT_INIT(0);
55
+ atomic_int mem_req = AGOO_ATOMIC_INT_INIT(0);
56
+ atomic_int mem_res = AGOO_ATOMIC_INT_INIT(0);
57
+ atomic_int mem_res_body = AGOO_ATOMIC_INT_INIT(0);
58
+ atomic_int mem_response = AGOO_ATOMIC_INT_INIT(0);
59
+ atomic_int mem_subject = AGOO_ATOMIC_INT_INIT(0);
60
+ atomic_int mem_text = AGOO_ATOMIC_INT_INIT(0);
61
+ atomic_int mem_to_s = AGOO_ATOMIC_INT_INIT(0);
62
+ atomic_int mem_upgraded = AGOO_ATOMIC_INT_INIT(0);
63
63
 
64
64
  #ifdef MEM_DEBUG
65
65
  static void
@@ -159,7 +159,7 @@ debug_rreport() {
159
159
 
160
160
  void
161
161
  debug_add(void *ptr, const char *type, const char *file, int line) {
162
- Rec r = (Rec)malloc(sizeof(struct _Rec));
162
+ Rec r = (Rec)malloc(sizeof(struct _rec));
163
163
 
164
164
  r->ptr = ptr;
165
165
  r->type = type;
@@ -3,7 +3,7 @@
3
3
  #ifndef AGOO_DEBUG_H
4
4
  #define AGOO_DEBUG_H
5
5
 
6
- #include <stdatomic.h>
6
+ #include "atomic.h"
7
7
 
8
8
  #ifdef MEM_DEBUG
9
9
  #define DEBUG_ALLOC(var, ptr) { atomic_fetch_add(&var, 1); debug_add(ptr, #var, FILE, LINE); }
@@ -19,7 +19,7 @@ pttttttttttttttttttttttttttp.p.t\
19
19
  ................................";
20
20
 
21
21
  void
22
- doc_init(Doc doc, const char *str, int len) {
22
+ agoo_doc_init(agooDoc doc, const char *str, int len) {
23
23
  if (0 >= len) {
24
24
  len = (int)strlen(str);
25
25
  }
@@ -33,7 +33,7 @@ doc_init(Doc doc, const char *str, int len) {
33
33
  }
34
34
 
35
35
  int
36
- doc_skip_white(Doc doc) {
36
+ agoo_doc_skip_white(agooDoc doc) {
37
37
  const char *start = doc->cur;
38
38
 
39
39
  for (; 'w' == char_map[*(uint8_t*)doc->cur]; doc->cur++) {
@@ -42,7 +42,7 @@ doc_skip_white(Doc doc) {
42
42
  }
43
43
 
44
44
  void
45
- doc_skip_comment(Doc doc) {
45
+ agoo_doc_skip_comment(agooDoc doc) {
46
46
  for (; true; doc->cur++) {
47
47
  switch (*doc->cur) {
48
48
  case '\r':
@@ -55,7 +55,7 @@ doc_skip_comment(Doc doc) {
55
55
  }
56
56
 
57
57
  void
58
- doc_read_token(Doc doc) {
58
+ agoo_doc_read_token(agooDoc doc) {
59
59
  if ('t' == char_map[*(uint8_t*)doc->cur] && '9' < *doc->cur) {
60
60
  doc->cur++;
61
61
  for (; 't' == char_map[*(uint8_t*)doc->cur]; doc->cur++) {
@@ -64,11 +64,11 @@ doc_read_token(Doc doc) {
64
64
  }
65
65
 
66
66
  void
67
- doc_next_token(Doc doc) {
67
+ agoo_doc_next_token(agooDoc doc) {
68
68
  while (true) {
69
- doc_skip_white(doc);
69
+ agoo_doc_skip_white(doc);
70
70
  if ('#' == *doc->cur) {
71
- doc_skip_comment(doc);
71
+ agoo_doc_skip_comment(doc);
72
72
  } else {
73
73
  break;
74
74
  }
@@ -77,12 +77,12 @@ doc_next_token(Doc doc) {
77
77
 
78
78
  // Just find end.
79
79
  int
80
- doc_read_string(Err err, Doc doc) {
80
+ agoo_doc_read_string(agooErr err, agooDoc doc) {
81
81
  doc->cur++; // skip first "
82
82
  if ('"' == *doc->cur) { // a """ string or an empty string
83
83
  doc->cur++;
84
84
  if ('"' != *doc->cur) {
85
- return ERR_OK; // empty string
85
+ return AGOO_ERR_OK; // empty string
86
86
  }
87
87
  doc->cur++;
88
88
  for (; doc->cur < doc->end; doc->cur++) {
@@ -102,13 +102,13 @@ doc_read_string(Err err, Doc doc) {
102
102
  }
103
103
  }
104
104
  if (doc->end <= doc->cur) {
105
- return doc_err(doc, err, "String not terminated");
105
+ return agoo_doc_err(doc, err, "String not terminated");
106
106
  }
107
- return ERR_OK;
107
+ return AGOO_ERR_OK;
108
108
  }
109
109
 
110
110
  int
111
- doc_err(Doc doc, Err err, const char *fmt, ...) {
111
+ agoo_doc_err(agooDoc doc, agooErr err, const char *fmt, ...) {
112
112
  va_list ap;
113
113
  char msg[248];
114
114
  int line = 0;
@@ -116,14 +116,14 @@ doc_err(Doc doc, Err err, const char *fmt, ...) {
116
116
 
117
117
  va_start(ap, fmt);
118
118
  vsnprintf(msg, sizeof(msg), fmt, ap);
119
- doc_location(doc, &line, &col);
119
+ agoo_doc_location(doc, &line, &col);
120
120
  va_end(ap);
121
121
 
122
- return err_set(err, ERR_PARSE, "%s at %d:%d", msg, line, col);
122
+ return agoo_err_set(err, AGOO_ERR_PARSE, "%s at %d:%d", msg, line, col);
123
123
  }
124
124
 
125
125
  void
126
- doc_location(Doc doc, int *linep, int *colp) {
126
+ agoo_doc_location(agooDoc doc, int *linep, int *colp) {
127
127
  const char *s;
128
128
  int line = 1;
129
129
  int col = 1;
@@ -151,9 +151,9 @@ doc_location(Doc doc, int *linep, int *colp) {
151
151
  }
152
152
 
153
153
  gqlValue
154
- doc_read_value(Err err, Doc doc) {
154
+ agoo_doc_read_value(agooErr err, agooDoc doc) {
155
155
  // TBD handle list and object as well as scalars, object is typeless
156
- // TBD put this in doc_read_value
156
+ // TBD put this in agoo_doc_read_value
157
157
  return NULL;
158
158
  }
159
159
 
@@ -9,26 +9,26 @@
9
9
 
10
10
  struct _gqlValue;
11
11
 
12
- typedef struct _Doc {
12
+ typedef struct _agooDoc {
13
13
  const char *str;
14
14
  const char *cur;
15
15
  const char *end;
16
- } *Doc;
16
+ } *agooDoc;
17
17
 
18
- extern void doc_init(Doc doc, const char *str, int len);
18
+ extern void agoo_doc_init(agooDoc doc, const char *str, int len);
19
19
 
20
- extern int doc_skip_white(Doc doc);
21
- extern void doc_skip_comment(Doc doc);
22
- extern int doc_read_desc(Err err, Doc doc);
20
+ extern int agoo_doc_skip_white(agooDoc doc);
21
+ extern void agoo_doc_skip_comment(agooDoc doc);
22
+ extern int agoo_doc_read_desc(agooErr err, agooDoc doc);
23
23
 
24
- extern void doc_next_token(Doc doc);
25
- extern void doc_read_token(Doc doc);
24
+ extern void agoo_doc_next_token(agooDoc doc);
25
+ extern void agoo_doc_read_token(agooDoc doc);
26
26
 
27
- extern int doc_read_string(Err err, Doc doc);
27
+ extern int agoo_doc_read_string(agooErr err, agooDoc doc);
28
28
 
29
- extern int doc_err(Doc doc, Err err, const char *fmt, ...);
30
- extern void doc_location(Doc doc, int *linep, int *colp);
29
+ extern int agoo_doc_err(agooDoc doc, agooErr err, const char *fmt, ...);
30
+ extern void agoo_doc_location(agooDoc doc, int *linep, int *colp);
31
31
 
32
- extern struct _gqlValue* doc_read_value(Err err, Doc doc);
32
+ extern struct _gqlValue* agoo_doc_read_value(agooErr err, agooDoc doc);
33
33
 
34
34
  #endif // AGOO_DOC_H
@@ -11,7 +11,7 @@
11
11
  #endif
12
12
 
13
13
  int
14
- err_set(Err err, int code, const char *fmt, ...) {
14
+ agoo_err_set(agooErr err, int code, const char *fmt, ...) {
15
15
  va_list ap;
16
16
 
17
17
  va_start(ap, fmt);
@@ -23,7 +23,7 @@ err_set(Err err, int code, const char *fmt, ...) {
23
23
  }
24
24
 
25
25
  int
26
- err_no(Err err, const char *fmt, ...) {
26
+ agoo_err_no(agooErr err, const char *fmt, ...) {
27
27
  int cnt = 0;
28
28
 
29
29
  if (NULL != fmt) {
@@ -45,32 +45,32 @@ err_no(Err err, const char *fmt, ...) {
45
45
  }
46
46
 
47
47
  void
48
- err_clear(Err err) {
49
- err->code = ERR_OK;
48
+ agoo_err_clear(agooErr err) {
49
+ err->code = AGOO_ERR_OK;
50
50
  *err->msg = '\0';
51
51
  }
52
52
 
53
53
  const char*
54
- err_str(ErrCode code) {
54
+ agoo_err_str(agooErrCode code) {
55
55
  const char *str = NULL;
56
56
 
57
- if (code < ERR_START) {
57
+ if (code < AGOO_ERR_START) {
58
58
  str = strerror(code);
59
59
  }
60
60
  if (NULL == str) {
61
61
  switch (code) {
62
- case ERR_PARSE: str = "parse error"; break;
63
- case ERR_READ: str = "read failed"; break;
64
- case ERR_WRITE: str = "write failed"; break;
65
- case ERR_ARG: str = "invalid argument"; break;
66
- case ERR_NOT_FOUND: str = "not found"; break;
67
- case ERR_THREAD: str = "thread error"; break;
68
- case ERR_NETWORK: str = "network error"; break;
69
- case ERR_LOCK: str = "lock error"; break;
70
- case ERR_FREE: str = "already freed"; break;
71
- case ERR_IN_USE: str = "in use"; break;
72
- case ERR_TOO_MANY: str = "too many"; break;
73
- case ERR_TYPE: str = "type error"; break;
62
+ case AGOO_ERR_PARSE: str = "parse error"; break;
63
+ case AGOO_ERR_READ: str = "read failed"; break;
64
+ case AGOO_ERR_WRITE: str = "write failed"; break;
65
+ case AGOO_ERR_ARG: str = "invalid argument"; break;
66
+ case AGOO_ERR_NOT_FOUND:str = "not found"; break;
67
+ case AGOO_ERR_THREAD: str = "thread error"; break;
68
+ case AGOO_ERR_NETWORK: str = "network error"; break;
69
+ case AGOO_ERR_LOCK: str = "lock error"; break;
70
+ case AGOO_ERR_FREE: str = "already freed"; break;
71
+ case AGOO_ERR_IN_USE: str = "in use"; break;
72
+ case AGOO_ERR_TOO_MANY: str = "too many"; break;
73
+ case AGOO_ERR_TYPE: str = "type error"; break;
74
74
  default: str = "unknown error"; break;
75
75
  }
76
76
  }
@@ -5,41 +5,41 @@
5
5
 
6
6
  #include <errno.h>
7
7
 
8
- #define ERR_START 300
9
- #define ERR_INIT { 0, { 0 } }
8
+ #define AGOO_ERR_START 300
9
+ #define AGOO_ERR_INIT { 0, { 0 } }
10
10
 
11
11
  typedef enum {
12
- ERR_OK = 0,
13
- ERR_MEMORY = ENOMEM,
14
- ERR_DENIED = EACCES,
15
- ERR_IMPL = ENOSYS,
16
- ERR_PARSE = ERR_START,
17
- ERR_READ,
18
- ERR_WRITE,
19
- ERR_OVERFLOW,
20
- ERR_ARG,
21
- ERR_NOT_FOUND,
22
- ERR_THREAD,
23
- ERR_NETWORK,
24
- ERR_LOCK,
25
- ERR_FREE,
26
- ERR_IN_USE,
27
- ERR_TOO_MANY,
28
- ERR_TYPE,
29
- ERR_LAST
30
- } ErrCode;
12
+ AGOO_ERR_OK = 0,
13
+ AGOO_ERR_MEMORY = ENOMEM,
14
+ AGOO_ERR_DENIED = EACCES,
15
+ AGOO_ERR_IMPL = ENOSYS,
16
+ AGOO_ERR_PARSE = AGOO_ERR_START,
17
+ AGOO_ERR_READ,
18
+ AGOO_ERR_WRITE,
19
+ AGOO_ERR_OVERFLOW,
20
+ AGOO_ERR_ARG,
21
+ AGOO_ERR_NOT_FOUND,
22
+ AGOO_ERR_THREAD,
23
+ AGOO_ERR_NETWORK,
24
+ AGOO_ERR_LOCK,
25
+ AGOO_ERR_FREE,
26
+ AGOO_ERR_IN_USE,
27
+ AGOO_ERR_TOO_MANY,
28
+ AGOO_ERR_TYPE,
29
+ AGOO_ERR_LAST
30
+ } agooErrCode;
31
31
 
32
32
  // The struct used to report errors or status after a function returns. The
33
33
  // struct must be initialized before use as most calls that take an err
34
34
  // argument will return immediately if an error has already occurred.
35
- typedef struct _Err {
35
+ typedef struct _agooErr {
36
36
  int code;
37
37
  char msg[256];
38
- } *Err;
38
+ } *agooErr;
39
39
 
40
- extern int err_set(Err err, int code, const char *fmt, ...);
41
- extern int err_no(Err err, const char *fmt, ...);
42
- extern const char* err_str(ErrCode code);
43
- extern void err_clear(Err err);
40
+ extern int agoo_err_set(agooErr err, int code, const char *fmt, ...);
41
+ extern int agoo_err_no(agooErr err, const char *fmt, ...);
42
+ extern const char* agoo_err_str(agooErrCode code);
43
+ extern void agoo_err_clear(agooErr err);
44
44
 
45
45
  #endif /* AGOO_ERR_H */