void Logstalgia::addGroup(const std::string& group_by, const std::string& grouptitle, const std::string& groupregex, int percent, vec3 colour) { if(percent<0) return; int remaining_percent = (int) ( ((float) remaining_space/total_space) * 100); if(remaining_percent<=0) return; if(!percent || percent > remaining_percent) { percent = remaining_percent; } Summarizer* summarizer = new Summarizer(fontSmall, percent, settings.update_rate, groupregex, grouptitle); if(glm::dot(colour, colour) > 0.01f) { summarizer->setColour(colour); } if(!summarizer_types[group_by]) { summarizer_types[group_by] = new std::vector<Summarizer*>(); } summarizers.push_back(summarizer); summarizer_types[group_by]->push_back(summarizer); int space = (int) ( ((float)percent/100) * total_space ); remaining_space -= space; }
void Logstalgia::addGroup(std::string grouptitle, std::string groupregex, int percent, vec3f colour) { if(percent<0) return; int remainpc = (int) ( ((float) remaining_space/total_space) * 100); if(percent==0) { percent=remainpc; } if(remainpc<percent) return; int space = (int) ( ((float)percent/100) * total_space ); int top_gap = total_space - remaining_space; int bottom_gap = display.height - (total_space - remaining_space + space); //debugLog("group %s: regex = %s, remainpc = %d, space = %d, top_gap = %d, bottom_gap = %d\n", // grouptitle.c_str(), groupregex.c_str(), remainpc, space, top_gap, bottom_gap); Summarizer* summ = new Summarizer(fontSmall, paddle_x, top_gap, bottom_gap, update_rate, groupregex, grouptitle); // summ->showCount(true); if(colour.length2() > 0.01f) { summ->setColour(colour); } summGroups.push_back(summ); remaining_space -= space; }
void Logstalgia::addStrings(LogEntry* le) { Summarizer* groupSummarizer = getGroupSummarizer(le); if(!groupSummarizer) return; std::string hostname = le->hostname; std::string pageurl = le->path; if(settings.hide_url_prefix) pageurl = filterURLHostname(pageurl); groupSummarizer->addString(pageurl); ipSummarizer->addString(hostname); }
void Logstalgia::addBall(LogEntry* le, float start_offset) { //find appropriate summarizer for url Summarizer* groupSummarizer = getGroupSummarizer(le); if(!groupSummarizer) return; Paddle* entry_paddle = 0; if(settings.paddle_mode > PADDLE_SINGLE) { std::string paddle_token = (settings.paddle_mode == PADDLE_VHOST) ? le->vhost : le->pid; entry_paddle = paddles[paddle_token]; if(entry_paddle == 0) { vec2 paddle_pos = vec2(paddle_x - 20, rand() % display.height); Paddle* paddle = new Paddle(paddle_pos, paddle_colour, paddle_token, fontSmall); entry_paddle = paddles[paddle_token] = paddle; } } else { entry_paddle = paddles[""]; } std::string hostname = le->hostname; std::string pageurl = le->path; if(settings.hide_url_prefix) pageurl = filterURLHostname(pageurl); float dest_y = groupSummarizer->getMiddlePosY(pageurl); float pos_y = ipSummarizer->getMiddlePosY(hostname); float start_x = -(entry_paddle->getX() * settings.pitch_speed * start_offset); //debugLog("start_offset %.2f : start_x = %.2f (paddle_x %.2f, pitch_speed %.2f)", start_offset, start_x, entry_paddle->getX(), settings.pitch_speed); vec2 ball_start = vec2(start_x, pos_y); vec2 ball_dest = vec2(entry_paddle->getX(), dest_y); const std::string& match = ipSummarizer->getBestMatchStr(hostname); vec3 colour = groupSummarizer->isColoured() ? groupSummarizer->getColour() : colourHash(match); RequestBall* ball = new RequestBall(le, &fontMedium, balltex, colour, ball_start, ball_dest); balls.push_back(ball); }
void Logstalgia::addGroup(std::string grouptitle, std::string groupregex, int percent, vec3 colour) { if(percent<0) return; int remaining_percent = (int) ( ((float) remaining_space/total_space) * 100); if(!percent) percent = remaining_percent; if(remaining_percent < percent) return; Summarizer* summarizer = new Summarizer(fontSmall, percent, settings.update_rate, groupregex, grouptitle); if(glm::dot(colour, colour) > 0.01f) { summarizer->setColour(colour); } summGroups.push_back(summarizer); int space = (int) ( ((float)percent/100) * total_space ); remaining_space -= space; }
void Logstalgia::addGroup(const std::string& group_by, const std::string& grouptitle, const std::string& groupregex, int percent, vec3 colour) { if(percent<0) return; int remaining_percent = (int) ( ((float) remaining_space/total_space) * 100); if(remaining_percent<=0) return; if(!percent || percent > remaining_percent) { percent = remaining_percent; } Summarizer* summarizer = 0; try { summarizer = new Summarizer(fontSmall, percent, settings.update_rate, groupregex, grouptitle); } catch(RegexCompilationException& e) { throw SDLAppException("invalid regular expression for group '%s'", grouptitle.c_str()); } if(glm::dot(colour, colour) > 0.01f) { summarizer->setColour(colour); } if(!summarizer_types[group_by]) { summarizer_types[group_by] = new std::vector<Summarizer*>(); } summarizers.push_back(summarizer); summarizer_types[group_by]->push_back(summarizer); int space = (int) ( ((float)percent/100) * total_space ); remaining_space -= space; }
void report(vector<pair<int, float> > result, Query *q, IndexReader &ir, Summarizer &sr) { cout << "numhit = " << result.size() << endl; for (unsigned i = 0; i < result.size() && i < 5; i++) { int did = result[i].first; cout << "[" << setw(padding) << setfill(' ') << did << "] "; cout << fixed << setprecision(6) << result[i].second << " "; cout << ir.didmap[did].name << " "; cout << "(" << ir.didmap[did].len << ")" << endl; cout << " ..." << sr.summary(q, did) << "..." << endl; } if (result.size() > 5) { cout << "... (result trucated)" << endl; } cout << endl; }