@@ -17,15 +17,23 @@ static int request_num = 1;
17
17
// static int req_num = 16000;
18
18
static int req_num = 100 ;
19
19
20
+ #ifdef DEBUG
20
21
#define CHECK (status, msg ) \
21
22
if (status != 0 ) { \
22
23
fprintf (stderr, " %s: %s\n " , msg, uv_err_name (status)); \
23
24
exit (1 ); \
24
25
}
25
- #define UVERR (err, msg ) fprintf(stderr, " %s: %s\n " , msg, uv_strerror (err))
26
+ #define UVERR (err, msg ) fprintf(stderr, " %s: %s\n " , msg, uv_err_name (err))
26
27
#define LOG_ERROR (msg ) puts(msg);
27
28
#define LOG (msg ) puts(msg);
28
- #define LOGF (fmt, params... ) printf(fmt " \n " , params);
29
+ #define LOGF (...) printf(__VA_ARGS__);
30
+ #else
31
+ #define CHECK (status, msg )
32
+ #define UVERR (err, msg )
33
+ #define LOG_ERROR (msg )
34
+ #define LOG (msg )
35
+ #define LOGF (...)
36
+ #endif
29
37
30
38
struct client_t {
31
39
client_t () :
@@ -53,8 +61,8 @@ void on_close(uv_handle_t* handle) {
53
61
void on_read (uv_stream_t *tcp, ssize_t nread, const uv_buf_t * buf) {
54
62
ssize_t parsed;
55
63
client_t * client = (client_t *) tcp->data ;
56
- LOGF (" on read: %ld" ,nread);
57
- LOGF (" on read buf.size: %ld" ,buf->len );
64
+ LOGF (" on read: %ld\n " ,nread);
65
+ LOGF (" on read buf.size: %ld\n " ,buf->len );
58
66
if (nread > 0 ) {
59
67
http_parser * parser = &client->parser ;
60
68
/* if (parser->http_errno == HPE_PAUSED) {
@@ -67,7 +75,7 @@ void on_read(uv_stream_t *tcp, ssize_t nread, const uv_buf_t * buf) {
67
75
}
68
76
else if (parsed != nread) {
69
77
LOGF (" parsed incomplete data: %ld/%ld bytes parsed\n " , parsed, nread);
70
- LOGF (" \n *** %s ***\n\n " ,
78
+ LOGF (" \n *** %s ***\n " ,
71
79
http_errno_description (HTTP_PARSER_ERRNO (parser)));
72
80
}
73
81
} else {
@@ -99,7 +107,7 @@ void on_connect(uv_connect_t *req, int status) {
99
107
100
108
client->request_num ++;
101
109
102
- LOGF (" [ %5d ] new connection" , request_num);
110
+ LOGF (" [ %5d ] new connection\n " , request_num);
103
111
104
112
uv_buf_t resbuf;
105
113
std::string res =
@@ -124,32 +132,32 @@ void on_connect(uv_connect_t *req, int status) {
124
132
}
125
133
126
134
int on_message_begin (http_parser* /* parser*/ ) {
127
- printf (" \n ***MESSAGE BEGIN***\n " );
135
+ LOGF (" \n ***MESSAGE BEGIN***\n " );
128
136
return 0 ;
129
137
}
130
138
131
139
int on_headers_complete (http_parser* /* parser*/ ) {
132
- printf (" \n ***HEADERS COMPLETE***\n " );
140
+ LOGF (" \n ***HEADERS COMPLETE***\n " );
133
141
return 0 ;
134
142
}
135
143
136
144
int on_url (http_parser* /* parser*/ , const char * at, size_t length) {
137
- printf (" Url: %.*s\n " , (int )length, at);
145
+ LOGF (" Url: %.*s\n " , (int )length, at);
138
146
return 0 ;
139
147
}
140
148
141
149
int on_header_field (http_parser* /* parser*/ , const char * at, size_t length) {
142
- printf (" Header field: %.*s\n " , (int )length, at);
150
+ LOGF (" Header field: %.*s\n " , (int )length, at);
143
151
return 0 ;
144
152
}
145
153
146
154
int on_header_value (http_parser* /* parser*/ , const char * at, size_t length) {
147
- printf (" Header value: %.*s\n " , (int )length, at);
155
+ LOGF (" Header value: %.*s\n " , (int )length, at);
148
156
return 0 ;
149
157
}
150
158
151
159
int on_body (http_parser* parser, const char * at, size_t length) {
152
- printf (" Body: %d\n " , (int )length);
160
+ LOGF (" Body: %d\n " , (int )length);
153
161
client_t *client = (client_t *)parser->data ;
154
162
if (at && client)
155
163
{
@@ -169,12 +177,12 @@ int on_body(http_parser* parser, const char* at, size_t length) {
169
177
}
170
178
171
179
int on_message_complete (http_parser* parser) {
172
- printf (" \n ***MESSAGE COMPLETE***\n \n" );
180
+ LOGF (" \n ***MESSAGE COMPLETE***\n " );
173
181
client_t *client = (client_t *)parser->data ;
174
182
ssize_t total_len = client->body .str ().size ();
175
- LOGF (" total length parsed: %ld" ,total_len)
183
+ LOGF (" total length parsed: %ld\n " ,total_len)
176
184
if (http_should_keep_alive (parser)) {
177
- printf (" \n ***SHOULD CLOSE keepalive HERE \n \n" );
185
+ LOGF (" \n ***SHOULD CLOSE keepalive HERE \n " );
178
186
uv_stream_t * tcp = (uv_stream_t *)&client->tcp ;
179
187
uv_close ((uv_handle_t *)tcp, on_close);
180
188
}
@@ -189,7 +197,7 @@ void on_resolved(uv_getaddrinfo_t *req, int status, struct addrinfo *res) {
189
197
190
198
char addr[17 ] = {' \0 ' };
191
199
uv_ip4_name ((struct sockaddr_in *) res->ai_addr , addr, 16 );
192
- fprintf (stderr, " resolved to %s\n " , addr);
200
+ LOGF ( " resolved to %s\n " , addr);
193
201
uv_freeaddrinfo (res);
194
202
struct sockaddr_in dest;
195
203
int r = uv_ip4_addr (addr, 8000 , &dest);
@@ -215,7 +223,7 @@ int main() {
215
223
// mainly for osx, bump up ulimit
216
224
struct rlimit limit;
217
225
getrlimit (RLIMIT_NOFILE,&limit);
218
- LOGF (" current ulimit: %lld" ,limit.rlim_cur );
226
+ LOGF (" current ulimit: %lld\n " ,limit.rlim_cur );
219
227
req_parser_settings.on_message_begin = on_message_begin;
220
228
req_parser_settings.on_url = on_url;
221
229
req_parser_settings.on_header_field = on_header_field;
0 commit comments