// --------------------------------------------------------------------------- // 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()); }
// --------------------------------------------------------------------------- // 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(); } }
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)); } }
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; } } }
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); }