rosaria/Legacy/Aria/ArNetworking/tests/watchDockInfo.cpp
2021-12-16 14:07:59 +00:00

104 lines
2.4 KiB
C++

#include "Aria.h"
#include "ArNetworking.h"
void dockInfoChanged(ArNetPacket *packet)
{
int state = packet->bufToUByte();
int forcedDock = packet->bufToUByte();
int secondsToShutdown = packet->bufToUByte2();
std::string stateStr;
std::string forcedStr;
if (state == 0)
stateStr = " Undocked";
else if (state == 1)
stateStr = " Docking";
else if (state == 2)
stateStr = " Docked";
else if (state == 3)
stateStr = "Undocking";
else
stateStr = " Unknown";
if (forcedDock == 0)
forcedStr = "false";
else if (forcedDock == 1)
forcedStr = " true";
else
forcedStr = "unknown";
if (secondsToShutdown == 0)
ArLog::log(ArLog::Normal, "State: %s Forced: %s Shutdown: never",
stateStr.c_str(), forcedStr.c_str());
else
ArLog::log(ArLog::Normal, "State: %s Forced: %s Shutdown: %d",
stateStr.c_str(), forcedStr.c_str(), secondsToShutdown);
}
/* Key handler for the escape key: shutdown all of Aria. */
void escape(void)
{
printf("esc pressed, shutting down aria\n");
Aria::shutdown();
}
int main(int argc, char **argv)
{
Aria::init();
ArClientBase client;
ArArgumentParser parser(&argc, argv);
ArClientSimpleConnector clientConnector(&parser);
parser.loadDefaultArguments();
if (!Aria::parseArgs() || !parser.checkHelpAndWarnUnparsed())
{
Aria::logOptions();
exit(0);
}
if (!clientConnector.connectClient(&client))
{
if (client.wasRejected())
printf("Server '%s' rejected connection, exiting\n", client.getHost());
else
printf("Could not connect to server '%s', exiting\n", client.getHost());
exit(1);
}
printf("Connected to server.\n");
/* Create a key handler and also tell Aria about it */
ArKeyHandler keyHandler;
Aria::setKeyHandler(&keyHandler);
/* Global escape-key handler to shut everythnig down */
ArGlobalFunctor escapeCB(&escape);
keyHandler.addKeyHandler(ArKeyHandler::ESCAPE, &escapeCB);
client.addHandler("dockInfoChanged", new ArGlobalFunctor1<ArNetPacket *>(&dockInfoChanged));
client.requestOnce("dockInfoChanged");
client.request("dockInfoChanged", -1);
client.runAsync();
while (client.getRunningWithLock())
{
keyHandler.checkKeys();
ArUtil::sleep(100);
}
/* The client stopped running, due to disconnection from the server, general
* Aria shutdown, or some other reason. */
Aria::shutdown();
return 0;
}