/**
 * 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");
}
Пример #2
0
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();

}
Пример #3
0
/**
 * 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;
}