32 #if defined ZMQ_HAVE_TIPC 39 zmq::tipc_address_t::tipc_address_t ()
44 zmq::tipc_address_t::tipc_address_t (
const sockaddr *sa, socklen_t sa_len)
49 if (sa->sa_family == AF_TIPC)
53 zmq::tipc_address_t::~tipc_address_t ()
57 int zmq::tipc_address_t::resolve (
const char *name)
59 unsigned int type = 0;
60 unsigned int lower = 0;
61 unsigned int upper = 0;
62 unsigned int z = 1, c = 0, n = 0;
65 const int res = sscanf (name,
"{%u,%u,%u}", &type, &lower, &upper);
68 if ((domain = strchr(name,
'@'))) {
69 if (sscanf(domain,
"@%u.%u.%u%c", &z, &c, &n, &eof) != 3)
75 if (res == 2 && type > TIPC_RESERVED_TYPES) {
77 address.addrtype = TIPC_ADDR_NAME;
79 address.addr.name.name.instance = lower;
80 address.addr.name.domain = tipc_addr (z, c, n);
87 if (type < TIPC_RESERVED_TYPES || upper < lower)
90 address.addrtype = TIPC_ADDR_NAMESEQ;
92 address.addr.nameseq.lower = lower;
93 address.addr.nameseq.upper = upper;
94 address.scope = TIPC_ZONE_SCOPE;
98 int zmq::tipc_address_t::to_string (std::string &addr_)
100 if (
address.family != AF_TIPC) {
105 s <<
"tipc://" <<
"{" <<
address.addr.nameseq.type;
106 s <<
", " <<
address.addr.nameseq.lower;
107 s <<
", " <<
address.addr.nameseq.upper <<
"}";
112 const sockaddr *zmq::tipc_address_t::addr ()
const 117 socklen_t zmq::tipc_address_t::addrlen ()
const 119 return (socklen_t)
sizeof address;