Esempio n. 1
0
 OniSensorInfo getSensorInfo()
 {
   VideoModeMap supported_modes = getSupportedVideoModes();
   OniVideoMode* modes = new OniVideoMode[supported_modes.size()];
   std::transform(supported_modes.begin(), supported_modes.end(), modes, ExtractKey());
   OniSensorInfo sensors = { getSensorType(), static_cast<int>(supported_modes.size()), modes };
   return sensors;
 }
Esempio n. 2
0
string Host::generateQuery(hostMessage sensorData, Database db)
{
  string table;
  stringstream values;

  int type = getSensorType(sensorData);

  if(type == SENSOR_TYPE_SENSORDATA)
  {
    table = "sensorvalues(host_id, name, value, created_at)";
    values << sensorData.hostID
      << ", '"
      << Database::escapeString(sensorData.type)
      << "', '"
      << Database::escapeString(sensorData.value)
      << "', NOW()";
  }
  else if(type == SENSOR_TYPE_PROFILEDATA)
  {
    if(sensorData.type == "profile_hostname"){ stringstream query; query << "UPDATE hosts SET hostname = '" << Database::escapeString(sensorData.value) << "' WHERE id = " << sensorData.hostID; return query.str(); }
    if(sensorData.type == "profile_domainname"){ stringstream query; query << "UPDATE hosts SET domainname = '" << Database::escapeString(sensorData.value) << "' WHERE id = " << sensorData.hostID; return query.str(); }
    if(sensorData.type == "profile_kernel"){ stringstream query; query << "UPDATE hosts SET linux_kernelversion = '" << Database::escapeString(sensorData.value) << "' WHERE id = " << sensorData.hostID; return query.str(); }
    if(sensorData.type == "profile_total_memory"){ stringstream query; query << "UPDATE hosts SET total_memory = '" << Database::escapeString(sensorData.value) << "' WHERE id = " << sensorData.hostID; return query.str(); }
    if(sensorData.type == "profile_total_swap"){ stringstream query; query << "UPDATE hosts SET total_swap = '" << Database::escapeString(sensorData.value) << "' WHERE id = " << sensorData.hostID; return query.str(); }
    if(sensorData.type == "profile_sp_client_version"){ stringstream query; query << "UPDATE hosts SET clientversion = '" << Database::escapeString(sensorData.value) << "' WHERE id = " << sensorData.hostID; return query.str(); }
    if(sensorData.type == "profile_network_interfaces")
    {
      stringstream delquery; delquery << "DELETE FROM networkinterfaces WHERE host_id = " << sensorData.hostID;
      db.setQuery(db.getHandle(), delquery.str());
      vector<string> queries = buildNetworkInterfacesQuery(sensorData.value, sensorData.hostID);
      for(vector<string>::const_iterator iter = queries.begin(); iter != queries.end(); ++iter)
      {
        db.setQuery(db.getHandle(), *iter);
      }
      // Let the calling method know that we already inserted the values for this packet.
      return "done";
    }
    if(sensorData.type == "profile_cpus")
    {
      stringstream delquery; delquery << "DELETE FROM cpus WHERE host_id = " << sensorData.hostID;
      db.setQuery(db.getHandle(), delquery.str());
      vector<string> queries = buildCpusQuery(sensorData.value, sensorData.hostID);
      for(vector<string>::const_iterator iter = queries.begin(); iter != queries.end(); ++iter)
      {
        db.setQuery(db.getHandle(), *iter);
      }
      // Let the calling method know that we already inserted the values for this packet.
      return "done";
    }
  }
  else
  {
    return "err";
  }

  return "INSERT INTO " + table + " VALUES( " + values.str() + ")";
}
Esempio n. 3
0
bool Host::receiveAndStoreData(Database db)
{
  // Receive the sensor data.
  string msg = receive();

  // Check if the messsage was received successfully.
  if(msg == "err")
  {
    lastError = "Could not receive message from client.";
    return 0;
  }

  hostMessage sensorData = parse(msg);

  string query = generateQuery(sensorData, db);

  if(query == "err")
  {
    lastError = "Could not generate query.";
    return 0;
  }

  if(query == "done")
  {
    // The data has been inserted by generateQuery()! (i know..)
    return 1;
  }

  // Recent sensor data.
  if(getSensorType(sensorData) == SENSOR_TYPE_SENSORDATA)
  {
    if(!db.setQuery(db.getHandle(), generateDeletionQueryForRecentData(sensorData))
      || !db.setQuery(db.getHandle(), generateQueryForRecentData(sensorData)))
    {
      lastError = "Could not store data in recent value table. Database error: " + db.getError();
      return 0;
    }
  }

  if(!db.setQuery(db.getHandle(), query))
  {
    lastError = "Could not store data. Database error: " + db.getError();
    return 0;
  }
  else
  {
    return 1;
  }
}