| 8 | |
| 9 | namespace NPar { |
| 10 | static TNetworkAddress CreateAddress(const TString& server, int defaultPort) { |
| 11 | TNetworkAddress::TPortNum port = defaultPort; |
| 12 | TString addr; |
| 13 | if (server.Contains('[')) { // handle ipv6 address |
| 14 | Y_ENSURE(server.Contains(']'), "invalid v6 address" << server); |
| 15 | auto pos = server.rfind(']'); |
| 16 | addr = server.substr(0, pos + 1); |
| 17 | if (pos != server.size() - 1) { // we have port |
| 18 | Y_ENSURE(server[pos + 1] == ':' && server.size() > pos + 2, "invalid v6 address" << server); |
| 19 | port = FromString<TNetworkAddress::TPortNum>(server.substr(pos + 2)); |
| 20 | } |
| 21 | } else { |
| 22 | if (!server.Contains(':')) { |
| 23 | addr = server; |
| 24 | } else { |
| 25 | TString portStr; |
| 26 | Split(server, ':', addr, portStr); |
| 27 | port = FromString<TNetworkAddress::TPortNum>(portStr); |
| 28 | } |
| 29 | } |
| 30 | return TNetworkAddress(addr, port); |
| 31 | } |
| 32 | |
| 33 | ////////////////////////////////////////////////////////////////////////// |
| 34 | TRootEnvironment::TRootEnvironment(const char* hostsFileName, int defaultSlavePort, int masterPort, int debugPort) { |