void FeedSocketDriver::ExecuteCommand( Command command )
{
	string logMessage = "FeedsSocket Driver - Execute Command "	+ command.Name();
	EventLogger::Instance()->WriteInformation( logMessage.c_str() );

	if ( !strcmp( command.Name().c_str(), INIT_CMD ) )
	{
		CommandParameter* ipParam = command.GetParameter( SOCKETDriver_IP );
		this->ip = *(string*)(ipParam->Value);

		CommandParameter* portParam = command.GetParameter( SOCKETDriver_PORT );
		this->port = *(int*)(portParam->Value);

		FeedsSocketClient::Instance()->Initialize(this->ip, this->port);

	    string initMessage = "{\"command\":\"Init\", \"userId\"=\"1\"}";
	    FeedsSocketClient::Instance()->SendMessage(initMessage);
	}
	else if( !strcmp( command.Name().c_str(), STOP_CMD ) )
	{
		FeedsSocketClient::Instance()->Close();
	}
	else if( !strcmp( command.Name().c_str(), SETVAL_CMD) )
	{
		CommandParameter* ipParam = command.GetParameter( VALUE_KEY );
		string msg = *(string*)(ipParam->Value);

		string sendmsg = "{\"command\":\"PostData\", \"userId\":\"1\", \"feedId\":\"1\", \"date\":\"Today\", \"value\":\"" + msg + "\"}";
		FeedsSocketClient::Instance()->SendMessage( sendmsg );
	}
}
Exemple #2
0
void FileTransfer::Run()
{
  std::cout << "File Transfer service started" << std::endl;

  while (true)
  {
    Command *cmd = DeQ();

    if (cmd == 0) // termination signal
      break;

    if (cmd->Name() == "PutFile")
    {
      PutFile * pf = dynamic_cast<PutFile*>(cmd);

      std::string newpath = _saveDir + "\\" + pf->_fname;
      (void) DeleteFile(newpath.c_str()); // delete target file just in case
      bool status = MoveFile(pf->_path.c_str(), newpath.c_str()) ? true : false;

      StatusMessage * resp = new StatusMessage(status);
      resp->SetConn(cmd->Msg().Conn());
      Dispatch(resp);

    } else
    {
      std::cout << "Command " << cmd->Name() << " is not known" << std::endl;
    }

    delete cmd;
  }

  std::cout << "File Transfer service stopped" << std::endl;
}
bool IObjectMapPropertyType<KeyType, ValueType>::DoDeserialize(
	BidirectionalSerializer &bidi, KeyType &key, ValueType &value)
{
	IDeserializer *deserializer = bidi.Deserializer();

	Command item;

	if(deserializer->BeginCommand(item))
	{
		OrkAssert(item.Type() == Command::EITEM);

		if(item.Type() != Command::EITEM)
		{
			deserializer->EndCommand(item);
			bidi.Fail();
			return false;
		}

		Command attribute;
		deserializer->BeginCommand(attribute);
		
		OrkAssert(attribute.Type() == Command::EATTRIBUTE);
		OrkAssert(attribute.Name() == "key");

		if(attribute.Type() != Command::EATTRIBUTE || attribute.Name() != "key")
		{
			deserializer->EndCommand(attribute);
			bidi.Fail();
			return false;
		}

		deserializer->Hint("map_key");
		bidi | key;
		deserializer->EndCommand(attribute);

		deserializer->Hint("map_value");
		bidi | value;
		deserializer->EndCommand(item);

		return true;
	}

	return false;
}
void ADCDevice::ExecuteCommand( Command command )
{
	string logMessage = "ADC Device - Executing Command "
			+ (string) command.Name();
	EventLogger::Instance()->WriteInformation( logMessage.c_str() );

	list<Pinout*>::iterator i;

	for ( i = this->pinouts->begin(); i != this->pinouts->end(); i++ )
	{
		( *i )->ExecuteCommand( command );
	}
}
Exemple #5
0
void TextSearch::Run()
{
  std::cout << "Text Search service started" << std::endl;

  while (true)
  {
    Command *cmd = DeQ();

    if (cmd == 0) // termination signal
      break;

    if (cmd->Name() == "SearchString")
    {      
      SearchString * ss = dynamic_cast<SearchString*>(cmd);

      ss->_svc = this;

      std::vector<std::string> files = FileSystem::Directory::getFiles(FileTransfer::SaveDir(), "*.*");
      for (auto& file : files)
        ss->_files.enQ(new std::string(FileTransfer::SaveDir() + "\\" + file));

      for (int i = 0; i < ss->_jobs; i++)
      {
        std::thread(TextSearch::SearchThread, ss).detach(); // we do not need the thread object
        ss->_files.enQ(0); // thread termination
      }
  
      continue; // so that we do not delete the command object here

    } else
    {
      std::cout << "Command " << cmd->Name() << " is not known" << std::endl;
    }

    delete cmd;
  }

  std::cout << "File Transfer service stopped" << std::endl;
}
void UltraHeatDriver::ExecuteCommand( Command command )
{
	string logMessage = "UltraHeatDriver - Execute Command " + command.Name();
	EventLogger::Instance()->WriteInformation( logMessage.c_str() );

	if ( !strcmp( command.Name().c_str(), INIT_CMD ) )
	{
		CommandParameter* comNumberParam = command.GetParameter( COMPORT_NUM );
		this->comPortNumber = *(int*) ( comNumberParam->Value );

		char temp[50];
		sprintf( temp, "%s%d", SERIAL_PORT, this->comPortNumber );
		this->comPortName = temp;

		this->comPortFD = this->Open_port();
		this->StartReadDataThread();
		EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - Opening serial port - %s", this->comPortName.c_str() );
	}
	else if ( !strcmp( command.Name().c_str(), SETVAL_CMD ) )
	{
		string data = "Exeuting SETVAL_CMD\n";
		write(this->fdDebug, data.c_str(), data.size() );

		CommandParameter* valueParam = command.GetParameter( VALUE_KEY );
		int value = *(int*) ( valueParam->Value );
		string message;

		if( value == 1 )
		{
			message = this->CreateMessage( HEAT_ON_CMDNAME, "" );
			EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - HEAT ONN - %s", message.c_str() );
		}
		else
		{
			message = this->CreateMessage( HEAT_OFF_CMDNAME, "" );
			EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - HEAT OFF - %s", message.c_str() );
		}

		this->WriteData( message );
	}
	else if ( !strcmp( command.Name().c_str(), STOP_CMD ) )
	{

		string logMessage = "UltraHeatDriver - Stop succeeded.";

		if( this->comPortFD == -1)
		{
			logMessage = "UltraHeatDriver - the COM hasn't been opened!";
		}
		else
		{
			this->Close_port( this->comPortFD );
		}

		EventLogger::Instance()->WriteVerbose( logMessage.c_str() );
		this->StopReadDataThread();
	}
	else if( ! strcmp( command.Name().c_str(), SET_PARAM_CMD ) )
	{
		CommandParameter* cmdParamKey = command.GetParameter( SET_PARAM_NAME );
		CommandParameter* cmdParamValue = command.GetParameter( SET_PARAM_VAL );

		if( cmdParamKey == NULL || cmdParamValue == NULL )
		{
			EventLogger::Instance()->WriteVerbose("The %s command should contain two parameters - %s and %s.", SET_PARAM_CMD, SET_PARAM_NAME, SET_PARAM_VAL);
			// throw
			return;
		}

		string key = *(string*)cmdParamKey->Value;
		string value = *(string*)cmdParamValue->Value;

		string message = this->CreateMessage( key, value );
		this->WriteData( message );
		EventLogger::Instance()->WriteVerbose( "UltraHeatDriver - %s", message.c_str() );
	}
	else
	{
		EventLogger::Instance()->WriteVerbose( "The command '%s' is not supported by the UltraHeatDriver.", command.Name().c_str() );
	}
}