示例#1
0
static void initargs(int argc, char **argv)
{
    int c;

    CmdName = cmdName(argv[0]);
    opterr = 0;
    while ((c = getopt(argc, argv, ":o:")) != -1) {
	switch (c) {
	case 'o':
	    outFile = openFile(optarg, "w");
	    break;
	case ':':
	    fprintf(stderr, "%s: option -%c missing parameter\n", CmdName, optopt);
	    usage(1);
	    break;
	case '?':
	    if (optopt == '?')
		usage(0);
	    else {
		fprintf(stderr, "%s: option -%c unrecognized\n", CmdName,
			optopt);
		usage(1);
	    }
	    break;
	}
    }

    argv += optind;
    argc -= optind;

    if (argc)
	Files = argv;
    if (!outFile)
	outFile = stdout;
}
示例#2
0
void ATCommand::setParameter(int index,const QString &value)
{
    if (mParameters.count() <= (unsigned int)index) {
        kdDebug() << "ATCommand " << cmdName() << " has no Parameter " << index
                  << endl;
        return;
    }

    mParameters.at(index)->setValue(value);
}
示例#3
0
static void initargs(int argc, char **argv)
{
    int c;

    CmdName = cmdName(argv[0]);
    opterr = 0;
    while ((c = getopt(argc, argv, ":gdo:")) != -1) {
	switch (c) {
	case 'd':
	    act = ToGV;
	    break;
	case 'g':
	    act = ToGXL;
	    break;
	case 'o':
	    outFile = openFile(optarg, "w");
	    break;
	case ':':
	    fprintf(stderr, "%s: option -%c missing argument\n", CmdName, optopt);
	    break;
	case '?':
	    if (optopt == '?')
		usage(0);
	    else {
		fprintf(stderr, "%s: option -%c unrecognized\n", CmdName,
			optopt);
		exit(1);
	    }
	}
    }

    argv += optind;
    argc -= optind;

    if (argc > 0)
	Files = argv;
    if (!outFile)
	outFile = stdout;
    if (act == Unset)
	setAction();
}
示例#4
0
	int SendRequest(int argc, char *argv[], const char *xmlFileName)
	{
		/*需要去除命令名的路径和扩展名*/
		std::string cmdName(argv[0]);
		
#ifdef PLATFORM_IS_WINDOWS
		if (cmdName.rfind('\\'))
		{
			cmdName = cmdName.substr(cmdName.rfind('\\') + 1, cmdName.npos);
		}
#endif
#ifdef PLATFORM_IS_LINUX
		if (cmdName.rfind('/'))
		{
			cmdName = cmdName.substr(cmdName.rfind('/') + 1, cmdName.npos);
		}
#endif
		
		if (cmdName.rfind('.'))
		{
			cmdName = cmdName.substr(0, cmdName.rfind('.'));
		}

		/*添加命令的所有参数*/
		for (int i = 1; i < argc; ++i)
		{
			cmdName = cmdName + " " + argv[i];
		}



		/*构造msg,这里需要先copy命令名称,然后依次copy各个参数*/
		Aris::Core::MSG msg;
		msg.Copy(cmdName.c_str());
		


		/*连接并发送msg*/
		Aris::Core::DOCUMENT doc;

		if (doc.LoadFile(xmlFileName) != 0)
			throw std::logic_error("failed to read configuration xml file");

		std::string ip = doc.RootElement()->FirstChildElement("Server")->FirstChildElement("Connection")->Attribute("IP");
		std::string port = doc.RootElement()->FirstChildElement("Server")->FirstChildElement("Connection")->Attribute("Port");

		Aris::Core::CONN conn;

		while (true)
		{
			try 
			{
				conn.Connect(ip.c_str(), port.c_str());
				break;
			}
			catch (std::exception &)
			{
				std::cout << "failed to connect server, will retry in 1 second" << std::endl;
				Aris::Core::Sleep(1000);
			}
			
		}
		
		Aris::Core::MSG ret = conn.SendRequest(msg);

		/*错误处理*/
		if (ret.GetLength() > 0)
		{
			std::cout << "cmd has fault, please regard to following information:" << std::endl;
			std::cout << "    " << ret.GetDataAddress() << std::endl;
		}
		else
		{
			std::cout << "send command successful" << std::endl;
		}

		return 0;
	}
示例#5
0
文件: client.cpp 项目: AceXIE/Aris
int sendRequest(int argc, char *argv[], const char *xmlFileName)
{
	// 需要去除命令名的路径和扩展名 //
	std::string cmdName(argv[0]);

#ifdef WIN32
	if (cmdName.rfind('\\'))
	{
		cmdName = cmdName.substr(cmdName.rfind('\\') + 1, cmdName.npos);
	}
#endif
#ifdef UNIX
	if (cmdName.rfind('/'))
	{
		cmdName = cmdName.substr(cmdName.rfind('/') + 1, cmdName.npos);
	}
#endif

	if (cmdName.rfind('.'))
	{
		cmdName = cmdName.substr(0, cmdName.rfind('.'));
	}

	// 添加命令的所有参数 //
	for (int i = 1; i < argc; ++i)
	{
		cmdName = cmdName + " " + argv[i];
	}

	// 构造msg,这里需要先copy命令名称,然后依次copy各个参数 //
	aris::core::Msg msg;
	msg.copy(cmdName.c_str());

	// 连接并发送msg //
	aris::core::XmlDocument doc;

	if (doc.LoadFile(xmlFileName) != 0)	throw std::logic_error("failed to read configuration xml file");

	std::string ip = doc.RootElement()->FirstChildElement("Server")->Attribute("ip");
	std::string port = doc.RootElement()->FirstChildElement("Server")->Attribute("port");

	aris::core::Socket conn;

	while (true)
	{
		try
		{
			conn.connect(ip.c_str(), port.c_str());
			break;
		}
		catch (std::exception &)
		{
			std::cout << "failed to connect server, will retry in 1 second" << std::endl;
			aris::core::msSleep(1000);
		}

	}

	aris::core::Msg ret = conn.sendRequest(msg);

	/*错误处理*/
	if (ret.size() > 0)
	{
		std::cout << "cmd has fault, please regard to following information:" << std::endl;
		std::cout << "    " << ret.data() << std::endl;
	}
	else
	{
		std::cout << "send command successful" << std::endl;
	}

	return 0;
}
示例#6
0
bool MainWindow::executeCommand(const DRUIDString & command)
{
	static const wxString runStatus(wxT("Executing command"));
	static const wxString inputRequired(wxT("Input Required..."));
	static const wxString integerInputRequired(wxT("Integer input Required..."));
	static const wxString numericInputRequired(wxT("Numeric input Required..."));
	static const wxString runStatusDone(wxT(" completed"));

	SetStatusText(runStatus);


	uint8_t wait_attempts=0;
	while (executing_request && wait_attempts++ < 5)
		usleep(1000);


	touchLastInteraction();
	DRUID::SerialUIUserPtr serial_user = connection->serialUser();


	DRUID_DEBUG2("Doing send+rcv for", command);

	executing_request = true;
	if ( (! serial_user->sendAndReceive(command)) || serial_user->hasError())
	{
		wxString errMsg(DRUID_STDSTRING_TOWX(serial_user->errorMessage()));

		SetStatusText(errMsg);
		MW_RETURNFROM_EXECUTECOMMAND(false);

	}

	awaiting_input = false;

	wxString cmdName(DRUID_STDSTRING_TOWX(command));
	if (serial_user->inputRequired())
	{

		serial_user->flushReceiveBuffer();
		serial_user->setAutoReplaceLastMessage(false);

		{ // may have more than a single input to enter, so we do/while it...

			DRUID_DEBUG("Need input...");
			oldFocus = this->FindFocus();
			awaiting_input = true;
			DRUID::UserInputType reqType = serial_user->inputRequiredType();

			// get the name from the prompt, if possible.
			if (serial_user->inputRequiredPromptString().size()) {
				cmdName =
						DRUID_STDSTRING_TOWX(serial_user->inputRequiredPromptString());
			}

			bool streamSuccess;
			switch (reqType) {
			case DRUID::InputType_Numeric:
				DRUID_DEBUG("Numeric input required");
				SetStatusText(numericInputRequired);
				break;

			case DRUID::InputType_Integer:
				DRUID_DEBUG("Numeric (int) input required");
				SetStatusText(integerInputRequired);
				break;

			case DRUID::InputType_Stream:

				DRUID_DEBUG("Want a stream (file) upload");

				// little bit different, this one... we need to select a file and stream its contents in...

				streamSuccess = sendFileStream();
				// outputTextCtrl->AppendText(DRUID_STDSTRING_TOWX(serial_user->lastMessage()));

				awaiting_input = false;
				MW_RETURNFROM_EXECUTECOMMAND(streamSuccess);
				break;

			default:
				DRUID_DEBUG("String input required");
				SetStatusText(inputRequired);
				break;

			}


			input->acceptInput(true, cmdName, reqType);


		}

	} else {

		wxString stat(cmdName);
		stat += runStatusDone;
		SetStatusText(stat);
		if (serial_user->messageReceived())
		{
			outputTextCtrl->AppendText(DRUID_STDSTRING_TOWX(serial_user->lastMessage()));

			serial_user->lastMessageClear();
		}


		serial_user->setAutoReplaceLastMessage(true);

		if (serial_user->requestedTerminate())
		{

			SetStatusText(wxT("GUI Termination requested"));

			// TODO: FIXME -- show user we aren't just dying but terminating on purpose.
			doQuit();

			MW_RETURNFROM_EXECUTECOMMAND(true);

		}


		if (useStateTracking() && serial_user->numTrackedVariables())
		{
			last_interaction = 0;
		}

	}


	MW_RETURNFROM_EXECUTECOMMAND(true);


}