equal
deleted
inserted
replaced
34 flib_vector *readBuffer; |
34 flib_vector *readBuffer; |
35 flib_tcpsocket *sock; |
35 flib_tcpsocket *sock; |
36 }; |
36 }; |
37 |
37 |
38 flib_netbase *flib_netbase_create(const char *server, uint16_t port) { |
38 flib_netbase *flib_netbase_create(const char *server, uint16_t port) { |
|
39 if(log_badargs_if2(server==NULL, port==0)) { |
|
40 return NULL; |
|
41 } |
|
42 |
39 flib_netbase *result = NULL; |
43 flib_netbase *result = NULL; |
40 flib_netbase *newNet = flib_calloc(1, sizeof(flib_netbase)); |
44 flib_netbase *newNet = flib_calloc(1, sizeof(flib_netbase)); |
41 |
45 |
42 if(newNet) { |
46 if(newNet) { |
43 newNet->readBuffer = flib_vector_create(); |
47 newNet->readBuffer = flib_vector_create(); |
60 free(net); |
64 free(net); |
61 } |
65 } |
62 } |
66 } |
63 |
67 |
64 bool flib_netbase_connected(flib_netbase *net) { |
68 bool flib_netbase_connected(flib_netbase *net) { |
65 if(!net) { |
69 if(!log_badargs_if(net==NULL) && net->sock) { |
66 flib_log_e("null parameter in flib_netbase_connected"); |
|
67 return false; |
|
68 } else if(net->sock) { |
|
69 return true; |
70 return true; |
70 } else { |
71 } |
71 return false; |
72 return false; |
72 } |
|
73 } |
73 } |
74 |
74 |
75 /** |
75 /** |
76 * Parses and returns a message, and removes it from the vector. |
76 * Parses and returns a message, and removes it from the vector. |
77 */ |
77 */ |
133 } |
133 } |
134 } |
134 } |
135 } |
135 } |
136 |
136 |
137 flib_netmsg *flib_netbase_recv_message(flib_netbase *net) { |
137 flib_netmsg *flib_netbase_recv_message(flib_netbase *net) { |
138 if(!net) { |
138 if(log_badargs_if(net==NULL)) { |
139 flib_log_e("null parameter in flib_netbase_recv_message"); |
|
140 return NULL; |
139 return NULL; |
141 } |
140 } |
142 |
141 |
143 flib_netmsg *msg; |
142 flib_netmsg *msg; |
144 while(!(msg=parseMessage(net->readBuffer)) |
143 while(!(msg=parseMessage(net->readBuffer)) |
158 flib_log_d("[NET OUT][%03u]%*.*s",(unsigned)len, (unsigned)len, (unsigned)len, data); |
157 flib_log_d("[NET OUT][%03u]%*.*s",(unsigned)len, (unsigned)len, (unsigned)len, data); |
159 } |
158 } |
160 } |
159 } |
161 |
160 |
162 int flib_netbase_send_raw(flib_netbase *net, const void *data, size_t len) { |
161 int flib_netbase_send_raw(flib_netbase *net, const void *data, size_t len) { |
163 if(!net || (!data && len>0)) { |
162 if(log_badargs_if2(net==NULL, data==NULL && len>0)) { |
164 flib_log_e("null parameter in flib_netbase_send_raw"); |
|
165 return -1; |
163 return -1; |
166 } |
164 } |
167 if(!net->sock) { |
165 if(!net->sock) { |
168 flib_log_w("flib_netbase_send_raw: Not connected."); |
166 flib_log_w("flib_netbase_send_raw: Not connected."); |
169 return -1; |
167 return -1; |
179 return -1; |
177 return -1; |
180 } |
178 } |
181 } |
179 } |
182 |
180 |
183 int flib_netbase_send_message(flib_netbase *net, flib_netmsg *msg) { |
181 int flib_netbase_send_message(flib_netbase *net, flib_netmsg *msg) { |
184 if(!net || !msg) { |
182 if(log_badargs_if2(net==NULL, msg==NULL)) { |
185 flib_log_e("null parameter in flib_netbase_send_message"); |
|
186 return -1; |
183 return -1; |
187 } |
184 } |
188 |
185 |
189 size_t totalSize = 0; |
186 size_t totalSize = 0; |
190 for(int i=0; i<msg->partCount; i++) { |
187 for(int i=0; i<msg->partCount; i++) { |
207 return flib_netbase_send_raw(net, buffer, pos); |
204 return flib_netbase_send_raw(net, buffer, pos); |
208 } |
205 } |
209 |
206 |
210 int flib_netbase_sendf(flib_netbase *net, const char *format, ...) { |
207 int flib_netbase_sendf(flib_netbase *net, const char *format, ...) { |
211 int result = -1; |
208 int result = -1; |
212 if(!net || !format) { |
209 if(!log_badargs_if2(net==NULL, format==NULL)) { |
213 flib_log_e("null parameter in flib_netbase_sendf"); |
|
214 } else { |
|
215 va_list argp; |
210 va_list argp; |
216 va_start(argp, format); |
211 va_start(argp, format); |
217 char *buffer = flib_vasprintf(format, argp); |
212 char *buffer = flib_vasprintf(format, argp); |
218 if(buffer) { |
213 if(buffer) { |
219 result = flib_netbase_send_raw(net, buffer, strlen(buffer)); |
214 result = flib_netbase_send_raw(net, buffer, strlen(buffer)); |
245 } |
240 } |
246 } |
241 } |
247 |
242 |
248 int flib_netmsg_append_part(flib_netmsg *msg, const void *part, size_t partlen) { |
243 int flib_netmsg_append_part(flib_netmsg *msg, const void *part, size_t partlen) { |
249 int result = -1; |
244 int result = -1; |
250 if(!msg) { |
245 if(!log_badargs_if2(msg==NULL, part==NULL && partlen>0)) { |
251 flib_log_e("null parameter in flib_netmsg_append_part"); |
|
252 } else { |
|
253 char **newParts = realloc(msg->parts, (msg->partCount+1)*sizeof(*msg->parts)); |
246 char **newParts = realloc(msg->parts, (msg->partCount+1)*sizeof(*msg->parts)); |
254 if(newParts) { |
247 if(newParts) { |
255 msg->parts = newParts; |
248 msg->parts = newParts; |
256 msg->parts[msg->partCount] = flib_malloc(partlen+1); |
249 msg->parts[msg->partCount] = flib_malloc(partlen+1); |
257 if(msg->parts[msg->partCount]) { |
250 if(msg->parts[msg->partCount]) { |