int handle_reply(rr_dev device, const char *reply, size_t nbytes) { if(device->onrecv) { device->onrecv(device, device->onrecv_data, reply, nbytes); } switch(device->proto) { case RR_PROTO_FIVED: return fived_handle_reply(device, reply, nbytes); case RR_PROTO_TONOKIP: return tonokip_handle_reply(device, reply, nbytes); case RR_PROTO_SIMPLE: if(!strncmp("ok", reply, 2) && device->onreply) { device->onreply(device, device->onreply_data, RR_OK, 0); } else if(device->onerr) { device->onerr(device, device->onerr_data, RR_E_UNKNOWN_REPLY, reply, nbytes); } return 0; default: return RR_E_UNSUPPORTED_PROTO; } return 0; }
static int handle_reply (rr_dev dev, const char *reply, size_t nbytes, size_t term_bytes) { if (dev->opt_log_cb) dev->opt_log_cb (dev, RR_LOG_RECV, reply, nbytes + term_bytes, dev->opt_log_cl); switch(dev->proto) { case RR_PROTO_FIVED: return fived_handle_reply (dev, reply, nbytes); case RR_PROTO_TONOKIP: return tonokip_handle_reply (dev, reply, nbytes); case RR_PROTO_SIMPLE: if (!strncasecmp ("ok", reply, 2) && dev->reply_cb) { rr_dev_handle_ok (dev); dev->reply_cb (dev, RR_OK, 0.0, NULL, dev->reply_cl); } else if (dev->error_cb) dev->error_cb (dev, RR_E_UNKNOWN_REPLY, reply, nbytes, dev->error_cl); return 0; default: return RR_E_UNSUPPORTED_PROTO; } return 0; }