int skprintf(int *sd, char *fmt, ...) { va_list ap; char buf[0x801]; socket_info("[write.%05d] skprintf: WARNING: NOT THREAD SAFE!\n", *sd); va_start(ap, fmt); vsprintf(buf, fmt, ap); va_end(ap); return skputs(buf, sd); }
int skgetc(int *sd) { int c = 0; int r = recv(*sd, (char *) &c, 1, 0); if(r == 0 || r == -1) { socket_debug("[%05d] EOF received.\n", *sd); c = EOF; } socket_info("[recv.%05d] 0x%02x '%c'\n", *sd, isprint(c) ? c : '0'); return c; }
int skgets(char *buf, int max, int *sd) { int c, len = 0; while((c = skgetc(sd)) != '\n' && c != EOF && len < max) { if(c != '\r') { *buf++ = (char) c; ++len; } } *buf = 0; socket_info("[read.%05d] size=%d, max=%d, \"%s\"\n", *sd,len,max,buf); return len; }
int skputs(char *buf, int *sd) { int i, k, size = strlen(buf); k = size; while(size > 0) { socket_info("[write.%05d] \"%s\"\n", *sd, buf); i = send(*sd, buf, size, 0); if(i == -1) { socket_debug("[%05d] Bad write: %s\n", *sd, strerror(errno)); return i; } size -= i; buf += i; } return k; }
int skwrite(int *sd, void *buf, int size) { socket_info("[write.%05d] Sending %02d bytes\n", *sd, size); return send(*sd, buf, size, 0); }
server_base::socket_info& internal_server::create_socket_info(send_function send_fn) { connections_.push_back(std::pair<send_function, socket_info>(send_fn, socket_info())); return connections_.back().second; }