97 auto GetLocalIP = [=](
const uint16_t sport)-> std::pair<std::string, uint16_t> {
98 std::pair<std::string, uint16_t> localIP;
99 int sock = socket(AF_INET, SOCK_DGRAM, 0);
102 std::cout <<
"Error number 1: " << errno << std::endl;
103 std::cout <<
"Error message: " << strerror(errno) << std::endl;
107 sockaddr_in loopback;
108 std::memset(&loopback, 0,
sizeof(loopback));
109 loopback.sin_family = AF_INET;
110 loopback.sin_addr.s_addr = INADDR_LOOPBACK;
111 loopback.sin_port = htons(9);
112 err = connect(sock,
reinterpret_cast<sockaddr*
>(&loopback),
sizeof(loopback));
115 std::cout <<
"Error number 2: " << errno << std::endl;
116 std::cout <<
"Error message: " << strerror(errno) << std::endl;
119 socklen_t addrlen =
sizeof(loopback);
120 err = getsockname(sock,
reinterpret_cast<struct sockaddr*
> (&loopback), &addrlen);
123 std::cout <<
"Error number 3: " << errno << std::endl;
124 std::cout <<
"Error message: " << strerror(errno) << std::endl;
130 localIP = std::pair<std::string, uint16_t>(std::string(buffer), sport);
133 std::cout <<
"Error number 4: " << errno << std::endl;
134 std::cout <<
"Error message: " << strerror(errno) << std::endl;
155 std::pair<std::string, uint16_t> serverTM;
160 longitudinal_highway_param,
162 lateral_highway_param,
163 perc_difference_from_limit,
168 serverTM = GetLocalIP(port);
171 episode_proxy.
Lock()->AddTrafficManagerRunning(serverTM);
175 std::cout <<
"NEW@: Registered TM at "
176 << serverTM.first <<
":"
177 << serverTM.second <<
" ..... SUCCESS."
182 _tm_map.insert(std::make_pair(port, tm_ptr));
192 if(episode_proxy.
Lock()->IsTrafficManagerRunning(port)) {
195 std::pair<std::string, uint16_t> serverTM =
196 episode_proxy.
Lock()->GetTrafficManagerRunning(port);
206 if(tm_ptr !=
nullptr) {
210 std::cout <<
"OLD@: Registered TM at "
211 << serverTM.first <<
":"
212 << serverTM.second <<
" ..... TRY "
219 _tm_map.insert(std::make_pair(port, tm_ptr));
233 std::cout <<
"OLD@: Registered TM at "
234 << serverTM.first <<
":"
235 << serverTM.second <<
" ..... FAILED "