Ejemplo n.º 1
0
/*!
** main this is the main fucntion of the progamm learn
**
** @param argc
** @param argv
**
** @return
*/
int		main(int	argc,
		     char	**argv)
{
  s_ppm		*input = NULL;

  if ((argc < 1) && !strcmp(argv[1], "--help"))
    {
      usage();
      return (0);
    }
  if (argc < 4)
    {
      usage();
      return (1);
    }
  if (!strcmp(argv[1], "--create"))
    {
      input = load_ppm(argv[2]);
      create(input, argv[3]);
      free_ppm(input);
    }
  if (!strcmp(argv[1], "--merge"))
    opt_merge(argv);
  if (!strcmp(argv[1], "--dir"))
    learn_dir(argv[2], argv[3]);
  return (0);
}
Ejemplo n.º 2
0
            int simple_kv_service_impl::apply_learn_state(learn_state& state)
            {
                blob bb((const char*)state.meta[0].data(), 0, state.meta[0].length());

                binary_reader reader(bb);

                zauto_lock l(_lock);

                _store.clear();

                int magic;
                reader.read(magic);

                dassert(magic == 0xdeadbeef, "");

                decree decree;
                reader.read(decree);

                dassert(decree >= 0, "");

                uint64_t count;
                reader.read(count);

                for (uint64_t i = 0; i < count; i++)
                {
                    std::string key, value;
                    reader.read(key);
                    reader.read(value);
                    _store[key] = value;
                }

                _last_committed_decree = decree;
                _last_durable_decree = 0;

                flush(true);

                bool ret = true;
                if (_test_file_learning)
                {
                    dassert(state.files.size() == 1, "");
                    std::string fn = learn_dir() + "/" + state.files[0];
                    ret = boost::filesystem::exists(fn);
                    if (ret)
                    {
                        std::string s;
                        std::ifstream fin(fn.c_str());                        
                        
                        getline(fin, s);
                        fin.close();

                        ret = (s == "DEADBEEF");
                    }
                    else
                    {
                        dassert(false, "learning file is missing");
                    }
                }

                if (ret) return 0;
                else return ERR_LEARN_FILE_FALED.get();
            }