static int dnet_send_idc(struct dnet_net_state *orig, struct dnet_net_state *send, struct dnet_id *id, uint64_t trans, unsigned int command, int reply, int direct, int more) { struct dnet_node *n = orig->n; int size = sizeof(struct dnet_addr_cmd) + orig->idc->id_num * sizeof(struct dnet_raw_id); void *buf; int err; struct timeval start, end; long diff; gettimeofday(&start, NULL); buf = malloc(size); if (!buf) { err = -ENOMEM; goto err_out_exit; } memset(buf, 0, sizeof(struct dnet_addr_cmd)); dnet_send_idc_fill(orig, buf, size, id, trans, command, reply, direct, more); gettimeofday(&end, NULL); diff = (end.tv_sec - start.tv_sec) * 1000000 + end.tv_usec - start.tv_usec; dnet_log(n, DNET_LOG_INFO, "%s: sending address %s: %ld\n", dnet_dump_id(id), dnet_state_dump_addr(orig), diff); err = dnet_send(send, buf, size); free(buf); err_out_exit: return err; }
static int dnet_send_idc(struct dnet_net_state *lstate, struct dnet_net_state *send, struct dnet_id *id, uint64_t trans, unsigned int command, int reply, int direct, int more) { struct dnet_node *n = lstate->n; int size = sizeof(struct dnet_addr_cmd) + sizeof(struct dnet_addr) * n->addr_num + lstate->idc->id_num * sizeof(struct dnet_raw_id); void *buf; int err; struct dnet_addr laddr; char server_addr[128], client_addr[128]; struct timeval start, end; long diff; gettimeofday(&start, NULL); buf = malloc(size); if (!buf) { err = -ENOMEM; goto err_out_exit; } memset(buf, 0, size); dnet_send_idc_fill(lstate, buf, size, id, trans, command, reply, direct, more); dnet_socket_local_addr(send->read_s, &laddr); gettimeofday(&end, NULL); diff = (end.tv_sec - start.tv_sec) * 1000000 + end.tv_usec - start.tv_usec; dnet_log(n, DNET_LOG_INFO, "%s: sending address %s -> %s, addr_num: %d, time-took: %ld\n", dnet_dump_id(id), dnet_server_convert_dnet_addr_raw(&laddr, server_addr, sizeof(server_addr)), dnet_server_convert_dnet_addr_raw(dnet_state_addr(send), client_addr, sizeof(client_addr)), n->addr_num, diff); err = dnet_send(send, buf, size); free(buf); err_out_exit: return err; }