std::shared_ptr<chat::user> accept_user(tool::acceptor& acceptor) { const size_t buf_size = 46; char buf[buf_size] = { 0 }; auto from_user = std::make_shared<tool::socket>(); auto to_user = std::make_shared<tool::socket>(); auto to_user_names = std::make_shared<tool::socket>(); tool::error_code err = acceptor.accept(from_user.get()); if (err != tool::error_code::NO_ERR) printf("node 1 error_code: %s\n", tool::error_to_string(err)); from_user->remote_address(buf, buf_size); printf("node 1: %s:%d\n", buf, from_user->remote_port()); err = acceptor.accept(to_user.get()); if (err != tool::error_code::NO_ERR) printf("node 2 error_code: %s\n", tool::error_to_string(err)); to_user->remote_address(buf, buf_size); printf("node 2: %s:%d\n", buf, to_user->remote_port()); err = acceptor.accept(to_user_names.get()); if (err != tool::error_code::NO_ERR) printf("node 3 error_code: %s\n", tool::error_to_string(err)); to_user_names->remote_address(buf, buf_size); printf("node 3: %s:%d\n", buf, to_user_names->remote_port()); return std::make_shared<chat::user>(from_user, to_user, to_user_names); }
std::string str_remote_port(void) const { std::stringstream ss; ss << remote_port(); return ss.str(); }
Socket_Info remote_socket_info(void) const { return Socket_Info(remote_address(), remote_port()); }