error-handling tweaks (refs #22)

This commit is contained in:
Mathew Sutcliffe
2013-07-05 18:48:58 +01:00
parent ab71d75683
commit 009bba1e54

View File

@@ -6,7 +6,6 @@
#include "network_vatlib.h" #include "network_vatlib.h"
#include <vector> #include <vector>
#include <exception> #include <exception>
#include <cassert>
namespace BlackCore namespace BlackCore
{ {
@@ -21,7 +20,6 @@ namespace BlackCore
try try
{ {
Q_ASSERT_X(m_fsdTextCodec, "NetworkVatlib", "Missing default wire text encoding"); Q_ASSERT_X(m_fsdTextCodec, "NetworkVatlib", "Missing default wire text encoding");
assert(m_fsdTextCodec);
//TODO reinit m_fsdTextCodec from WireTextEncoding config setting if present //TODO reinit m_fsdTextCodec from WireTextEncoding config setting if present
m_net->InstallOnConnectionStatusChangedEvent(onConnectionStatusChanged, this); m_net->InstallOnConnectionStatusChangedEvent(onConnectionStatusChanged, this);
@@ -106,29 +104,22 @@ namespace BlackCore
{ {
throw; throw;
} }
//catch (InvalidObjectException& e) //TODO ask Gary to confirm that trying to use an invalid Cvatlib_Network is always the result of a programmer error
//catch (ObjectNotSetupException& e) //TODO ask Gary what is "the setup function" mentioned in the ObjectNotSetupException documentation?
catch (NetworkNotConnectedException& e) catch (NetworkNotConnectedException& e)
{ {
// this could be caused by a race condition during normal operation, so not an error
qDebug() << "NetworkNotConnectedException: " << e.what(); qDebug() << "NetworkNotConnectedException: " << e.what();
} }
catch (VatlibException& e) catch (VatlibException& e)
{ {
Q_ASSERT_X(false, "NetworkVatlib", e.what()); qFatal("VatlibException: %s", e.what());
assert(false);
qDebug() << "VatlibException: " << e.what();
} }
catch (std::exception& e) catch (std::exception& e)
{ {
Q_ASSERT_X(false, "NetworkVatlib", e.what()); qFatal("NetworkVatlib: std::exception: %s", e.what());
assert(false);
qDebug() << "NetworkVatlib: std::exception: " << e.what();
} }
catch (...) catch (...)
{ {
Q_ASSERT_X(false, "NetworkVatlib", "Unknown exception"); qFatal("NetworkVatlib: unknown exception");
assert(false);
qDebug() << "NetworkVatlib: unknown exception";
} }
} }
@@ -374,21 +365,25 @@ namespace BlackCore
case Cvatlib_Network::error_Ok: return; case Cvatlib_Network::error_Ok: return;
case Cvatlib_Network::error_CallsignTaken: qCritical() << "The requested callsign is already taken"; break; case Cvatlib_Network::error_CallsignTaken: qCritical() << "The requested callsign is already taken"; break;
case Cvatlib_Network::error_CallsignInvalid: qCritical() << "The requested callsign is not valid"; break; case Cvatlib_Network::error_CallsignInvalid: qCritical() << "The requested callsign is not valid"; break;
case Cvatlib_Network::error_Registered: break; //TODO ask Gary to explain meaning
case Cvatlib_Network::error_Syntax: assert(false); qWarning() << "VATSIM shim library: Syntax error: " << cbvar_cast(cbvar)->fromFSD(data); break;
case Cvatlib_Network::error_SourceInvalid: break; //TODO ask Gary to explain meaning
case Cvatlib_Network::error_CIDPasswdInvalid: qCritical() << "Wrong user ID or password"; break; case Cvatlib_Network::error_CIDPasswdInvalid: qCritical() << "Wrong user ID or password"; break;
case Cvatlib_Network::error_CallsignNotExists: qDebug() << "Shim lib: " << cbvar_cast(cbvar)->fromFSD(msg) << " (" << cbvar_cast(cbvar)->fromFSD(data) << ")"; break;
case Cvatlib_Network::error_NoFP: break; //TODO ask Gary under what circumstance this can happen
case Cvatlib_Network::error_NoWeather: break; //TODO ask Gary to explain meaning
case Cvatlib_Network::error_ProtoVersion: qCritical() << "This server uses an unsupported protocol version"; break; case Cvatlib_Network::error_ProtoVersion: qCritical() << "This server uses an unsupported protocol version"; break;
case Cvatlib_Network::error_LevelTooHigh: qCritical() << "You are not authorized to use the requested pilot rating"; break; //TODO ask Gary to confirm meaning case Cvatlib_Network::error_LevelTooHigh: qCritical() << "You are not authorized to use the requested pilot rating"; break;
case Cvatlib_Network::error_ServerFull: qCritical() << "The server is full"; break; case Cvatlib_Network::error_ServerFull: qCritical() << "The server is full"; break;
case Cvatlib_Network::error_CIDSuspended: qCritical() << "Your user account is suspended"; break; case Cvatlib_Network::error_CIDSuspended: qCritical() << "Your user account is suspended"; break;
case Cvatlib_Network::error_InvalidControl: break; //TODO ask Gary to explain meaning
case Cvatlib_Network::error_InvalidPosition: qCritical() << "You are not authorized to use the requested pilot rating"; break; case Cvatlib_Network::error_InvalidPosition: qCritical() << "You are not authorized to use the requested pilot rating"; break;
case Cvatlib_Network::error_SoftwareNotAuthorized: qCritical() << "This client software has not been authorized for use on this network"; break; case Cvatlib_Network::error_SoftwareNotAuthorized: qCritical() << "This client software has not been authorized for use on this network"; break;
default: assert(false); qWarning() << "VATSIM shim library: " << cbvar_cast(cbvar)->fromFSD(msg) << "(error " << type << ")"; break;
case Cvatlib_Network::error_Syntax: qWarning() << "Malformed packet: Syntax error: %s" << cbvar_cast(cbvar)->fromFSD(data); break;
case Cvatlib_Network::error_SourceInvalid: qDebug() << "Server: source invalid (" << cbvar_cast(cbvar)->fromFSD(data); break;
case Cvatlib_Network::error_CallsignNotExists: qDebug() << "Shim lib: " << cbvar_cast(cbvar)->fromFSD(msg) << " (" << cbvar_cast(cbvar)->fromFSD(data) << ")"; break;
case Cvatlib_Network::error_NoFP: qDebug() << "Server: no flight plan"; break;
case Cvatlib_Network::error_NoWeather: qDebug() << "Server: requested weather profile does not exist"; break;
// we have no idea what these mean
case Cvatlib_Network::error_Registered:
case Cvatlib_Network::error_InvalidControl: qWarning() << "Server: " << cbvar_cast(cbvar)->fromFSD(msg); break;
default: qFatal("VATSIM shim library: %s (error %d)", cbvar_cast(cbvar)->fromFSD(msg), type); break;
} }
} }