Example #1
0
		void processMessage(const char * buffer, int length){
			std::string message = std::string(buffer, length);

			Json::Reader reader;
			Json::Value jmessage;
			if (!reader.parse(message, jmessage)) {
				std::cerr << "[SIG] error : cannot parse JSON message" << std::endl;
				return;
			}


			std::string func;
			rtc::GetStringFromJsonObject(jmessage,"func", &func);

			if(func.empty()){
				return ; //no command specified, ignore message
			}

			int peerid = -1;
			//Get Client ID
			rtc::GetIntFromJsonObject(jmessage, "peerId", &peerid);

			//If client ID not defined, abort
			if(peerid == -1) return ;

			if(func.compare("ListChannels") == 0){
				processListChannels(peerid, jmessage);
			}else if(func.compare("Connect") == 0){
				processConnect(peerid, jmessage);
			}else if(func.compare("ICECandidate") == 0){
				processICECandidate(peerid, jmessage);
			}else if(func.compare("Answer") == 0){
				processAnswer(peerid, jmessage);
			}
		}
Example #2
0
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // "Гасим" светодиод
    ui->led->turnOff();

    // Смена COM-порта
    connect(ui->portNameBox, SIGNAL(currentIndexChanged(int)), this, SLOT(checkCustomPortName(int)));
    // Смена скорости COM-порта
    connect(ui->baudRateBox, SIGNAL(currentIndexChanged(int)), this, SLOT(checkCustomBaudRatePolicy(int)));
    // Нажата кнопка подключения
    connect(ui->connectBtn, SIGNAL(clicked()), this, SIGNAL(processConnect()));
    // Отправка команды через консоль
    connect(ui->console, SIGNAL(onCommand(QString)), this, SIGNAL(onCommand(QString)));
}
Example #3
0
void DdpServer::process(const std::string &input)
{
    jvar::Variant inputData;
    if (!inputData.parseJson(input.c_str()))
        throw;

    jvar::Variant responseArray;
    responseArray.createArray();
    for(int i = 0; i < inputData.length();i++)
    {
        jvar::Variant packet;
        packet.parseJson(inputData[i].toString().c_str());

        jvar::Variant response;
        response = processPing(packet);
        response = response.isEmpty() ? processConnect(packet) : response;
        response = response.isEmpty() ? processSub(packet) : response;
        response = response.isEmpty() ? processUnsub(packet) : response;
        response = response.isEmpty() ? processMethod(packet) : response;

        if (response.isEmpty())
        {
            // unknown
        }
        else if (response.isArray())
        {
            for (int j = 0; j < response.length(); j++)
                responseArray.push(response[j].toString());
        }
        else
        {
            responseArray.push(response.toString());
        }

    }

    if (responseArray.length() == 0)
        return;

    onEmitCallback(context, "a" + responseArray.toJsonString());
}
Example #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;

    }
}
Example #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;
	}
}
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;
}