Пример #1
0
// ---------------------------------------------------------------------------
//	GetExEnList()
//	
// ---------------------------------------------------------------------------
size_t
O2Boards::
GetExEnList(wstrarray &boards)
{
	ExLock.Lock();
	for (O2BoardExMapIt exit = exmap.begin(); exit != exmap.end(); exit++) {
		if (exit->second->collectors.count() && exit->second->enable)
			boards.push_back(exit->first);
	}
	ExLock.Unlock();

	return (boards.size());
}
Пример #2
0
// ---------------------------------------------------------------------------
//	EnableEx()
//	
// ---------------------------------------------------------------------------
void
O2Boards::
EnableEx(wstrarray &enableboards)
{
	O2BoardExMapIt exit;

	ExLock.Lock();
	for (exit = exmap.begin(); exit != exmap.end(); exit++) {
		exit->second->enable = false;
	}
	ExLock.Unlock();

	for (size_t i = 0; i < enableboards.size(); i++) {
		ExLock.Lock();
		{
			exit = exmap.find(enableboards[i]);
			if (exit == exmap.end()) {
				O2BoardEx *ex = new O2BoardEx();
				ex->collectors.SetObject(Profile, Client);
				ex->enable = true;
				exmap.insert(O2BoardExMap::value_type(enableboards[i], ex));
			}
			else
				exit->second->enable = true;
		}
		ExLock.Unlock();
	}
}
Пример #3
0
void
O2DatDB::
get_column_names(sqlite3_stmt* stmt, wstrarray &cols)
{
	int column_count = sqlite3_column_count(stmt);
	for (int i = 0; i < column_count; i++) {
		cols.push_back((wchar_t*)sqlite3_column_name16(stmt, i));
	}
}
Пример #4
0
void
O2DatDB::
get_columns(sqlite3_stmt* stmt, wstrarray &cols)
{
	__int64 t_int;
	double	t_float;
	wstring	t_text;
	byte	*t_byte;
	int		size;
	wchar_t tmp[1024];

	int column_count = sqlite3_column_count(stmt);
	for (int i = 0; i < column_count; i++) {
		switch (sqlite3_column_type(stmt, i)) {
			case SQLITE_INTEGER:
				t_int = sqlite3_column_int64 (stmt, i);
				swprintf_s(tmp, 1024, L"%I64u", t_int);
				cols.push_back(tmp);
				break;
			case SQLITE_FLOAT:
				t_float = sqlite3_column_double(stmt, i);
				swprintf_s(tmp, 1024, L"%lf", t_float);
				cols.push_back(tmp);
				break;
			case SQLITE_TEXT:
				t_text = (wchar_t*)sqlite3_column_text16(stmt, i);
				cols.push_back(t_text);
				break;
			case SQLITE_BLOB:
				size = sqlite3_column_bytes(stmt, i);
				t_byte = new byte[size];
				memcpy(t_byte, (byte*)sqlite3_column_blob(stmt, i), size);
				byte2whex(t_byte, size, t_text);
				cols.push_back(t_text);
				delete [] t_byte;
				break;
		}
	}
}
Пример #5
0
uint
O2IPFilter::
filtering(ulong ip, const wstrarray &hostnames)
{
	uint ret = DefaultFlag;

	Lock();
	for (uint i = 0; i < records.size(); i++) {
		if (records[i].host.empty()) {
			if ((ip & records[i].mask) == records[i].ip)
				ret = records[i].flag;
		}
		else if (!hostnames.empty()) {
			for (uint j = 0; j < hostnames.size(); j++) {
				int offset = hostnames[j].size() - records[i].host.size();
				if (offset >= 0 && wcsncmp(&hostnames[j][offset], records[i].host.c_str(), records[i].host.size()) == 0)
					ret = records[i].flag;
			}
		}
	}
	Unlock();

	return (ret);
}