MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / Receive_GC_TURN_CONNECT

Method Receive_GC_TURN_CONNECT

src/network/network_coordinator.cpp:375–417  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

373}
374
375bool ClientNetworkCoordinatorSocketHandler::Receive_GC_TURN_CONNECT(Packet &p)
376{
377 std::string token = p.Recv_string(NETWORK_TOKEN_LENGTH);
378 uint8_t tracking_number = p.Recv_uint8();
379 std::string ticket = p.Recv_string(NETWORK_TOKEN_LENGTH);
380 std::string connection_string = p.Recv_string(NETWORK_HOSTNAME_PORT_LENGTH);
381 Debug(net, 9, "Coordinator::Receive_GC_TURN_CONNECT({}, {}, {}, {})", token, tracking_number, ticket, connection_string);
382
383 /* Ensure all other pending connection attempts are killed. */
384 if (this->game_connecter != nullptr) {
385 this->game_connecter->Kill();
386 this->game_connecter = nullptr;
387 }
388
389 this->turn_handlers[token] = ClientNetworkTurnSocketHandler::Turn(token, tracking_number, ticket, connection_string);
390
391 if (!_network_server) {
392 auto connecter_it = this->connecter.find(token);
393 if (connecter_it == this->connecter.end()) {
394 /* Make sure we are still interested in connecting to this server. */
395 this->ConnectFailure(token, 0);
396 return true;
397 }
398
399 switch (_settings_client.network.use_relay_service) {
400 case URS_NEVER:
401 this->ConnectFailure(token, 0);
402 break;
403
404 case URS_ASK:
405 ShowNetworkAskRelay(connecter_it->second.first, std::move(connection_string), std::move(token));
406 break;
407
408 case URS_ALLOW:
409 this->StartTurnConnection(token);
410 break;
411 }
412 } else {
413 this->StartTurnConnection(token);
414 }
415
416 return true;
417}
418
419void ClientNetworkCoordinatorSocketHandler::StartTurnConnection(std::string_view token)
420{

Callers

nothing calls this directly

Calls 8

ConnectFailureMethod · 0.95
StartTurnConnectionMethod · 0.95
ShowNetworkAskRelayFunction · 0.85
Recv_stringMethod · 0.80
Recv_uint8Method · 0.80
KillMethod · 0.45
findMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected