MCPcopy Create free account
hub / github.com/BZFlag-Dev/bzflag / BZAdminClient

Method BZAdminClient

src/bzadmin/BZAdminClient.cpp:37–140  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35StartupInfo startupInfo;
36
37BZAdminClient::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

Callers

nothing calls this directly

Calls 12

AddressClass · 0.85
getVersionMethod · 0.80
sendEnterMethod · 0.80
getIdMethod · 0.80
sendCapsMethod · 0.80
readEnterMethod · 0.80
setDebugMethod · 0.80
getStateMethod · 0.45
sendCustomDataMethod · 0.45
flushMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected