const std::string &lookup_result_t::addr() const { if (!m_addr) { char addr_dst[512]; struct dnet_addr *addr = m_entry.storage_address(); dnet_server_convert_dnet_addr_raw(addr, addr_dst, sizeof (addr_dst) - 1); std::string tmp(addr_dst); m_addr.reset(addr_dst); } return *m_addr; }
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; }