| 35 | StartupInfo startupInfo; |
| 36 | |
| 37 | BZAdminClient::BZAdminClient(BZAdminUI* bzInterface) |
| 38 | : myTeam(ObserverTeam) |
| 39 | , sLink(startupInfo.serverName, Address(startupInfo.serverName), startupInfo.serverPort) |
| 40 | , valid(false) |
| 41 | , ui(bzInterface) { |
| 42 | if (sLink.getState() != ServerLink::Okay) { |
| 43 | switch (sLink.getState()) { |
| 44 | case ServerLink::BadVersion: { |
| 45 | static char versionError[] = "Incompatible server version XXXXXXXX"; |
| 46 | strncpy(versionError + strlen(versionError) - 8, |
| 47 | sLink.getVersion(), 8); |
| 48 | std::cout << versionError; |
| 49 | break; |
| 50 | } |
| 51 | case ServerLink::Refused: { |
| 52 | std::string banMessage = "Server Refused connection due to ban: "; |
| 53 | banMessage += sLink.getRejectionMessage(); |
| 54 | std::cout << banMessage; |
| 55 | break; |
| 56 | } |
| 57 | case ServerLink::Rejected: |
| 58 | std::cout << "Game is full or over. Try again later."; |
| 59 | break; |
| 60 | case ServerLink::SocketError: |
| 61 | std::cout << "Error connecting to server."; |
| 62 | break; |
| 63 | case ServerLink::CrippledVersion: |
| 64 | std::cout << "Cannot connect to full version server."; |
| 65 | break; |
| 66 | default: |
| 67 | std::cout << "Internal error connecting to server."; |
| 68 | break; |
| 69 | } |
| 70 | std::cout << std::endl; |
| 71 | return; |
| 72 | } |
| 73 | if ((startupInfo.token[0] == '\0') && (startupInfo.password[0] != '\0')) { |
| 74 | // won't really output anything, just gets token |
| 75 | outputServerList(); |
| 76 | } |
| 77 | sLink.sendEnter(sLink.getId(), ChatPlayer, ChatUpdates, myTeam, |
| 78 | startupInfo.callsign, startupInfo.token, startupInfo.referrer); |
| 79 | sLink.sendCaps(sLink.getId(), false, false); |
| 80 | sLink.sendCustomData("motto", "bzadmin"); |
| 81 | sLink.flush(); |
| 82 | if (sLink.getState() != ServerLink::Okay) { |
| 83 | std::cerr << "Rejected." << std::endl; |
| 84 | return; |
| 85 | } |
| 86 | std::string reason; |
| 87 | uint16_t code, rejcode; |
| 88 | if (sLink.readEnter(reason, code, rejcode)) { |
| 89 | valid = true; |
| 90 | } |
| 91 | else { |
| 92 | std::cerr << reason << std::endl; |
| 93 | } |
| 94 |
nothing calls this directly
no test coverage detected