Esempio n. 1
0
int main(int argc, char **argv) {
  if (argc != 3) {
    printf("Usage: %s mmap_directory revision_input_file\n",
           argv[0]);
    exit(1);
  }
  struct revision_stats stats;
  get_file_stats(argv[2], &stats);
  printf("%d max user, %d max page, %"PRId64" max revision, %"PRId64" total revisions\n",
	 stats.max_user_id, stats.max_page_id, stats.max_revision_id, stats.total_revisions);
  char *user_index_mmap_name = full_path(argv[1], USER_INDEX_MMAP_NAME);
  char *page_index_mmap_name = full_path(argv[1], PAGE_INDEX_MMAP_NAME);
  char *revisions_mmap_name = full_path(argv[1], REVISIONS_MMAP_NAME);
  char *user_index_mmap = create_mmap(user_index_mmap_name, user_index_mmap_size(&stats));
  char *page_index_mmap = create_mmap(page_index_mmap_name, page_index_mmap_size(&stats));
  char *revisions_mmap = create_mmap(revisions_mmap_name, revision_mmap_size(&stats));
  ((struct user_header*)user_index_mmap)->count_users = stats.max_user_id + 1;
  ((struct page_header*)page_index_mmap)->count_pages = stats.max_page_id + 1;
  ((struct revision_header*)revisions_mmap)->count_revisions = stats.max_revision_id + 1;
  fill_mmaps(argv[2], &stats, user_index_mmap, page_index_mmap, revisions_mmap);
  free(user_index_mmap_name);
  free(page_index_mmap_name);
  free(revisions_mmap_name);
  return 0;
}
Esempio n. 2
0
void NotifyingXMLParser::parse_files(const std::vector<std::pair<std::string, std::string> > &files) {
	int progress = 0;
	for(size_t i = 0; i < files.size(); ++i) {
		int tags;
		scoped_ptr<mrt::BaseFile> f(Finder->get_file(files[i].second, "rt"));
		get_file_stats(tags, *f);
		progress += tags;
	}
	
	reset_progress.emit(progress);

	for(size_t i = 0; i < files.size(); ++i) {
		scoped_ptr<mrt::BaseFile> f(Finder->get_file(files[i].second, "rt"));
		onFile(files[i].first, files[i].second);
		mrt::XMLParser::parse_file(*f);
	}
}
Esempio n. 3
0
void NotifyingXMLParser::parse_file(const mrt::BaseFile &file) {
	int tags;
	get_file_stats(tags, file);
	reset_progress.emit(tags);
	mrt::XMLParser::parse_file(file);
}