/** * Creates a new ipfixDbReader. Do not forget to call @c startipfixDbReader() to begin reading from Database * @return handle to use when calling @c destroyipfixDbRreader() */ IpfixDbReader::IpfixDbReader(const string& hostname, const string& dbname, const string& username, const string& password, unsigned port, uint16_t observationDomainId, bool timeshift, bool fullspeed) : timeshift(timeshift), fullspeed(fullspeed), thread(readFromDB) { srcId.reset(new IpfixRecord::SourceID); srcId->observationDomainId = observationDomainId; srcId->exporterAddress.len = 0; srcId->exporterPort = 0; srcId->receiverPort = 0; srcId->protocol = 0; srcId->fileDescriptor = 0; if (connectToDb(hostname, dbname, username, password, port)) { THROWEXCEPTION("IpfixDbReader creation failed"); } /** get tables of the database*/ if(getTables() != 0) { msg(MSG_ERROR,"IpfixDbReader: Error in function getTables"); THROWEXCEPTION("IpfixDbReader creation failed"); } if(fullspeed && timeshift) msg(MSG_DIALOG, "IpfixDbReader: timeshift configured, but disabled in fullspeed mode"); }
DetaDoc::DetaDoc(QWidget *parent) : QMainWindow(parent), ui(new Ui::DetaDoc) { readSettings(); ui->setupUi(this); ui->mdiArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); ui->mdiArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); setCentralWidget(ui->mdiArea); createActions(); connectToDb(); }
/** * Creates a new ipfixDbReader. Do not forget to call @c startipfixDbReader() to begin reading from Database * @return handle to use when calling @c destroyipfixDbRreader() */ IpfixDbReader* createIpfixDbReader(const char* hostName, const char* dbName, const char* userName, const char* password, unsigned int port, uint16_t observationDomainId) { IpfixDbReader* ipfixDbReader = (IpfixDbReader*)malloc(sizeof(IpfixDbReader)); if (!ipfixDbReader) { msg(MSG_ERROR, "Could not allocate IpfixDbReader"); goto out0; } if (pthread_mutex_init(&ipfixDbReader->mutex, NULL)) { msg(MSG_FATAL, "Could not init mutex"); goto out1; } if (pthread_mutex_lock(&ipfixDbReader->mutex)) { msg(MSG_FATAL, "Could not lock mutex"); goto out1; } DbReader* dbReader = (DbReader*)malloc(sizeof(DbReader)); if (!ipfixDbReader) { msg(MSG_ERROR, "Could not allocate DbReader"); goto out1; } DbData* dbData = (DbData*)malloc(sizeof(DbData)); if (!dbData) { msg(MSG_ERROR, "Could not allocate dbData"); goto out2; } ipfixDbReader->dbReader = dbReader; dbReader->dbData = dbData; if (connectToDb(ipfixDbReader, hostName, dbName, userName, password, port, observationDomainId)) { goto out3; } msg(MSG_DEBUG,"Connected to database"); /** use database with db_name**/ if(mysql_select_db(ipfixDbReader->conn, ipfixDbReader->dbName) !=0) { msg(MSG_FATAL,"Database %s not selectable", ipfixDbReader->dbName); goto out3; } else { msg(MSG_DEBUG,"Database %s selected", ipfixDbReader->dbName); } /** get tableNames of the database*/ if(getTables(ipfixDbReader) != 0) { msg(MSG_ERROR,"Error in function getTables"); goto out3; } /**initialize columns**/ dbData->colCount = 0; if (pthread_create(&ipfixDbReader->thread, 0, readFromDB, ipfixDbReader)) { msg(MSG_FATAL, "Could not create dbRead thread"); goto out3; } return ipfixDbReader; out3: free(dbData); out2: free(dbReader); out1: free(ipfixDbReader); out0: return NULL; }