Example #1
0
void Action::clearOutputAgumentValues() {
  ArgumentList *outArgList = getOutputArgumentList();
  int nArgs = outArgList->size();
  for (int n = 0; n < nArgs; n++) {
    Argument *arg = outArgList->getArgument(n);
    arg->setValue("");
  }
}
Example #2
0
//! 
void ArgManager::analyse(int argc, char *argv[])
{
	// Lecture des paramétres
	int nbParam = (argc-1)/2;
	int acParam = 0;
	while(acParam <= nbParam && nbParam>0)
	{
		acParam++;
		string argTag = string(argv[acParam]);	
		absArgument* arg = getArg(argTag);
		if(arg==NULL){
			cerr << "Erreur argument " << argTag << " : tag non valide" << endl;
			stopProcess();
		}
		
		Argument<string>* strArg = dynamic_cast<Argument<string>* >(arg);
		Argument<int>* intArg = dynamic_cast<Argument<int>* >(arg);
		if(strArg)
		{	
			cerr << "if(strArg) ok" << " Value = " << string(argv[acParam+1]);
			strArg->validArg();
			strArg->setValue(string(argv[++acParam]));
		}
		else if(intArg)
		{
			// cerr << "acParam = " << acParam << "argc = "<< argc << endl;
			// cerr << "if(intArg) ok" << " Value = " << string(argv[acParam+1]) << endl;
			intArg->validArg();
			string strInt = string(argv[++acParam]);
			intArg->setValue(atoi(strInt.c_str()));
		}
		else
		{
			cerr << "Erreur argument " << argTag << " : type non valide" << endl;
			stopProcess();
		}

	}
}
void ActionRequest::initArgumentList() {
  Node *actNode = getActionNode();
  if (actNode == NULL)
    return;
  int nArgNodes = actNode->getNNodes();
  argumentList.clear();
  for (int n = 0; n < nArgNodes; n++) {
    Argument *arg = new Argument();
    Node *argNode = actNode->getNode(n);
    arg->setName(argNode->getName());
    arg->setValue(argNode->getValue());
    argumentList.add(arg);
  }
}
Example #4
0
bool TestDevice::actionControlReceived(Action *action)
{
	const char *actionName = action->getName();
	if (strcmp("GetCount", actionName) == 0) {
		Argument *countArg = action->getArgument("CurrentCount");
		countArg->setValue(count);
		return true;
	}
	if (strcmp(actionName, "SetCount") == 0) {
		Argument *countArg = action->getArgument("NewCount");
		int newCount = countArg->getIntegerValue();
		count = newCount;
		return true;
	}
	return false;
}
ClockDevice::ClockDevice() : Device(CLOCK_DESCRIPTION_FILE_NAME)
#else
ClockDevice::ClockDevice() : Device()
#endif
{
#if !defined(USE_CLOCK_DESCRIPTION_FILE)
	loadDescription(CLOCK_DEVICE_DESCRIPTION);
	Service *timeService = getService("urn:schemas-upnp-org:service:timer:1");
	timeService->loadSCPD(CLOCK_SERVICE_DESCRIPTION);
#endif

	Action *getTimeAction = getAction("GetTime");
	getTimeAction->setActionListener(this);
		
	Action *setTimeAction = getAction("SetTime");
	setTimeAction->setActionListener(this);
		
	ServiceList *serviceList = getServiceList();
	Service *service = serviceList->getService(0);
	service->setQueryListener(this);

	m_timeVar = getStateVariable("Time");

	setLeaseTime(60);
}

////////////////////////////////////////////////
// ActionListener
////////////////////////////////////////////////

bool ClockDevice::actionControlReceived(Action *action)
{
	const char *actionName = action->getName();
	if (strcmp("GetTime", actionName) == 0) {
		std::string dateStr;
		Clock clock;
		clock.toString(dateStr);
		Argument *timeArg = action->getArgument("CurrentTime");
		timeArg->setValue(dateStr.c_str());
		return true;
	}
	if (strcmp(actionName, "SetTime") == 0) {
		Argument *timeArg = action->getArgument("NewTime");
		const char *newTime = timeArg->getValue();
		Argument *resultArg = action->getArgument("Result");
		std::ostringstream valbuf;
		valbuf << "Not implemented (" << newTime << ")";
		resultArg->setValue(valbuf.str().c_str());
		return true;
	}
	return false;
}

////////////////////////////////////////////////
// QueryListener
////////////////////////////////////////////////

bool ClockDevice::queryControlReceived(StateVariable *stateVar)
{
	const char *varName = stateVar->getName();
	Clock clock;
	string clockVal;
	stateVar->setValue(clock.toString(clockVal));
	return true;
}

////////////////////////////////////////////////
// HttpRequestListner
////////////////////////////////////////////////

//void ClockDevice::httpRequestRecieved(HTTPRequest *httpReq)
HTTP::StatusCode ClockDevice::httpRequestRecieved(HTTPRequest *httpReq)
{
	ParameterList paramList;
	httpReq->getParameterList(paramList);
	for (int n=0; n<paramList.size(); n++) {
		Parameter *param = paramList.getParameter(n);
		cout << "[" << n << "] : " << param->getName() << " = " << param->getValue() << endl;
	}

	string uri;
	httpReq->getURI(uri);
	if (uri.find(CLOCK_PRESENTATION_URI) == string::npos)  {
		Device::httpRequestRecieved(httpReq);
        return HTTP::OK_REQUEST;
		//return ;
	}
			 
	string clockStr;
	Clock clock;
	clock.toString(clockStr);
	string contents;
	contents = "<HTML><BODY><H1>";
	contents += clockStr;
	contents += "</H1></BODY></HTML>";
		
	HTTPResponse httpRes;
	httpRes.setStatusCode(HTTP::OK_REQUEST);
	httpRes.setContent(contents);
	return httpReq->post(&httpRes) ? HTTP::OK_REQUEST : HTTP::INTERNAL_SERVER_ERROR;
}
bool X86RTLGenerator::parseArgument(x86_op_t *pOp, Argument &aArgument)
{
	if(!pOp)
	{
		return false;
	}

	switch(pOp->type)
	{
		case op_register:
		{
			aArgument.setType(Argument::TYPE_REGISTER);
			std::string strRegisterName = pOp->data.reg.name;

			if(strRegisterName == "ah")
			{
				aArgument.setRegister((Argument::eRegister)REGISTER_X86_EAX);
				aArgument.setDataWidth(Argument::DATA_WIDTH_8_LW_HB);
			}
			else if(strRegisterName == "al")
			{
				aArgument.setRegister((Argument::eRegister)REGISTER_X86_EAX);
				aArgument.setDataWidth(Argument::DATA_WIDTH_8_LW_LB);
			}
			else if(strRegisterName == "ax")
			{
				aArgument.setRegister((Argument::eRegister)REGISTER_X86_EAX);
				aArgument.setDataWidth(Argument::DATA_WIDTH_16_LW);
			}
			else if(strRegisterName == "eax")
			{
				aArgument.setRegister((Argument::eRegister)REGISTER_X86_EAX);
				aArgument.setDataWidth(Argument::DATA_WIDTH_32);
			}
			else if(strRegisterName == "esi")
			{
				aArgument.setRegister((Argument::eRegister)REGISTER_X86_ESI);
				aArgument.setDataWidth(Argument::DATA_WIDTH_32);
			}
			else if(strRegisterName == "esp")
			{
				aArgument.setRegister((Argument::eRegister)REGISTER_X86_ESP);
				aArgument.setDataWidth(Argument::DATA_WIDTH_32);
			}
			else
				return false;
			break;
		}
		case op_immediate:
			aArgument.setType(Argument::TYPE_VALUE);

			switch(pOp->datatype)
			{
				case op_byte:
					aArgument.setValue(pOp->data.byte);
					aArgument.setDataWidth(Argument::DATA_WIDTH_8_LW_LB);
					break;
				default:
					return false;
			}
			break;
		case op_expression:
			aArgument.setType(Argument::TYPE_MEMORY_LOC);
			break;
		case op_offset:
			aArgument.setType(Argument::TYPE_MEMORY_LOC);
			break;
		case op_relative_far:
			aArgument.setType(Argument::TYPE_VALUE);
			break;
		case op_relative_near:
			aArgument.setType(Argument::TYPE_VALUE);
			break;
		default:
			return false;
	}

	return true;
}