Ejemplo n.º 1
0
void Game::forceLogout()
{
    if(!isOnline())
        return;

    m_protocolGame->sendLogout();
    processDisconnect();
}
Ejemplo n.º 2
0
void Game::cancelLogin()
{
    // send logout even if the game has not started yet, to make sure that the player doesn't stay logged there
    if(m_protocolGame)
        m_protocolGame->sendLogout();

    processDisconnect();
}
Ejemplo n.º 3
0
void Game::processConnectionError(const boost::system::error_code& ec)
{
    // connection errors only have meaning if we still have a protocol
    if(m_protocolGame) {
        // eof = end of file, a clean disconnect
        if(ec != asio::error::eof)
            g_lua.callGlobalField("g_game", "onConnectionError", ec.message(), ec.value());

        processDisconnect();
    }
}
Ejemplo n.º 4
0
void SerialPortWorker::processCommand(Command command)
{
//    qDebug() << "Method name";

    switch (command.type) {

    case CT_create:
        processCreate(command.num);
        break;

    case CT_connect:
        processConnect(command.num);
        break;

    case CT_basicPosture:
        processBasicPosture(command.num);
        break;

    case CT_DCOn:
        processDCOn(command.num);
        break;

    case CT_setPose:
        processSetPose(command.num, command.angles);
        break;

    case CT_DCOff:
        processDCOff(command.num);
        break;

    case CT_disconnect:
        processDisconnect(command.num);
        break;

//    default:
//        break;

    }
}
Ejemplo n.º 5
0
void pollNet()
{
	if (connectState != ConnectState::Connecting &&
		connectState != ConnectState::Connected) {
		return;
	}

	// wait for the connection to succeed
	ENetEvent evt;
	if (enet_host_service(client, &evt, 0) > 0) {
		switch (evt.type) {
		case ENET_EVENT_TYPE_CONNECT:
			processConnect(evt);
			break;

		case ENET_EVENT_TYPE_DISCONNECT:
			processDisconnect(evt);
			break;

		case ENET_EVENT_TYPE_RECEIVE:
			processReceive(evt);
			break;

		case ENET_EVENT_TYPE_NONE:
			// make the compiler shut up about unhandled enum value
			break;
		}
	}

	if (connectState == ConnectState::Connecting &&
		narf::time::now() >= connectTimeoutEnd) {
		narf::console->println("Connection attempt timed out"); // TODO: use to_string

		enet_peer_reset(server);
		// TODO: is server valid at this point? do we need to destroy it?
		server = nullptr;
		connectState = ConnectState::Unconnected;
	}
}
Ejemplo n.º 6
0
bool DebuggerServlet::httpRecvRequest(const HTTPServer::Request& request) {
	if (!request.data.hasKey("path"))
		return false; //		returnError(request);

	if (isCORS(request)) {
		handleCORS(request);
		return true;
	}

	std::cout << request.data["path"] << ": " << request.data["content"] << std::endl;

	Data replyData;
	// process request that don't need a session
	if (false) {
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/connect")) {
		processConnect(request);
		return true;
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/sessions")) {
		processListSessions(request);
		return true;
	}

	// get session or return error
	if (false) {
	} else if (!request.data.at("content").hasKey("session")) {
		replyData.compound["status"] = Data("failure", Data::VERBATIM);
		replyData.compound["reason"] = Data("No session given", Data::VERBATIM);
	} else if (_sessionForId.find(request.data.at("content").at("session").atom) == _sessionForId.end()) {
		replyData.compound["status"] = Data("failure", Data::VERBATIM);
		replyData.compound["reason"] = Data("No such session", Data::VERBATIM);
	}
	if (replyData) {
		returnData(request, replyData);
		return true;
	}

	boost::shared_ptr<DebugSession> session = _sessionForId[request.data.at("content").at("session").atom];

	if (false) {
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/poll")) {
		// save long-standing client poll
		_clientConns[session] = request;
		serverPushData(session);

	} else if (boost::starts_with(request.data.at("path").atom, "/debug/disconnect")) {
		processDisconnect(request);

	} else if (boost::starts_with(request.data.at("path").atom, "/debug/breakpoint/enable/all")) {
		replyData = session->enableAllBreakPoints();
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/breakpoint/disable/all")) {
		replyData = session->disableAllBreakPoints();
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/breakpoint/skipto")) {
		replyData = session->skipToBreakPoint(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/breakpoint/add")) {
		replyData = session->addBreakPoint(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/breakpoint/remove")) {
		replyData = session->removeBreakPoint(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/breakpoint/enable")) {
		replyData = session->enableBreakPoint(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/breakpoint/disable")) {
		replyData = session->disableBreakPoint(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/stop")) {
		replyData = session->debugStop(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/prepare")) {
		replyData = session->debugPrepare(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/attach")) {
		replyData = session->debugAttach(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/start")) {
		replyData = session->debugStart(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/step")) {
		replyData = session->debugStep(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/pause")) {
		replyData = session->debugPause(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/resume")) {
		replyData = session->debugResume(request.data["content"]);
	} else if (boost::starts_with(request.data.at("path").atom, "/debug/eval")) {
		replyData = session->debugEval(request.data["content"]);
	}

	if (replyData) {
		returnData(request, replyData);
		return true;
	}

	return true;
}