int Mariadb_nodes::wait_all_vm()
{
    int i = 0;

    while ((check_nodes() != 0) && (i < 20)) {
        sleep(10);
    }
    return(check_nodes());
}
Esempio n. 2
0
static bool test_add_and_remove(void)
{
	struct rb_root root = RB_ROOT;
	struct node_thing nodes[4];
	bool expecteds[4];
	int i;
	struct node_thing *exists;
	bool success = true;

	for (i = 0; i < ARRAY_SIZE(nodes); i++) {
		nodes[i].i = i;
		RB_CLEAR_NODE(&nodes[i].hook);
		expecteds[i] = false;
	}

	exists = add(&root, &nodes[1]);
	success &= ASSERT_PTR(NULL, exists, "exists 1");
	expecteds[1] = true;
	success &= check_nodes(&root, expecteds);
	if (!success)
		return false;

	exists = add(&root, &nodes[3]);
	success &= ASSERT_PTR(NULL, exists, "exists 2");
	expecteds[3] = true;
	success &= check_nodes(&root, expecteds);
	if (!success)
		return false;

	exists = add(&root, &nodes[0]);
	success &= ASSERT_PTR(NULL, exists, "exists 3");
	expecteds[0] = true;
	success &= check_nodes(&root, expecteds);
	if (!success)
		return false;

	exists = add(&root, &nodes[2]);
	success &= ASSERT_PTR(NULL, exists, "exists 4");
	expecteds[2] = true;
	success &= check_nodes(&root, expecteds);

	rb_erase(&nodes[2].hook, &root);
	expecteds[2] = false;
	success &= check_nodes(&root, expecteds);
	if (!success)
		return false;

	return success;
}
/**
 * This function takes a dictionary tree and minimizes it using
 * Dominique Revuz's algorithm. 'used_inf_values' is used to mark
 * INF codes that are actually used in the .bin.
 */
void minimize_tree(struct dictionary_node* root,struct bit_array* used_inf_values,Abstract_allocator prv_alloc) {
u_printf("Minimizing...                      \n");
struct transition_list** transitions_by_height;
struct dictionary_node_transition** transitions;
//init_minimize_arrays(&transitions_by_height,&transitions);

init_minimize_arrays_transition_list(&transitions_by_height);


unsigned int H=sort_by_height(root,transitions_by_height,used_inf_values,prv_alloc);

unsigned int nb=0;
for (unsigned int k1=0;k1<=H;k1++) {
	unsigned int nbcur = convert_list_to_array_size(k1,transitions_by_height);
	if (nbcur>nb) {
		nb = nbcur;
	}
}
init_minimize_arrays_dictionary_node_transition(&transitions,nb);
float z;
for (unsigned int k=0;k<=H;k++) {
   int size=convert_list_to_array(k,transitions_by_height,transitions,nb,prv_alloc);
   for (int l=0;l<size;l++) {
	   check_nodes(transitions[l]);
   }
   quicksort(0,size-1,transitions);
   merge(size,transitions,prv_alloc);
   z=(float)(100.0*(float)(k)/(float)H);
   if (z>100.0) z=(float)100.0;
   u_printf("%2.0f%% completed...    \r",z);
}
u_printf("Minimization done.                     \n");
free_minimize_arrays(transitions_by_height,transitions);
}
// ---------------------------------------------------------------------------
// Common call
// ------------
void bXMapNetClean::process_network(netcleanact_prm* prm,
                                    int* fields,
                                    bArray& nodes,
                                    bArray& edges){
_bTrace_("bXMapNetClean::process_network(netcleanact_prm,int*,bArray&,bArray&)",true);
    if(_cfg_prm.tnod==NULL){
_te_("(_cfg_prm.tnod==NULL)");
        return;
    }
    if(	(_cfg_prm.tbdg==_cfg_prm.tnod)		&&
        (_cfg_prm.stbdg==_cfg_prm.stnod)	){
        _cfg_prm.tbdg=NULL;
    }
    if(	(_cfg_prm.stnod<1)															||
        (_cfg_prm.stnod>_cfg_prm.tnod->fields()->count_constraints(kOBJ_SubType_))	){
        if(	(_cfg_prm.tbdg)		&&
            (_cfg_prm.stbdg==1)	){
_te_("(_cfg_prm.tbdg)&&(_cfg_prm.stbdg==1)");
            return;
        }
        _cfg_prm.stnod=1;
    }
    
/*
 Inval et Draw pour provoquer un reset des styles
 Puis StopDraw derrière pour empécher le dessin
 Ceci pour régler le cas ou on supprime un objet
 dans la fonction précédente, qui va rester dans les
 index des styles et qui sera effacé définitivement
 par la déclaration du eventlog du nettoyage automatique
 */
    _gapp->mapIntf()->inval();
    _gapp->mapIntf()->draw();
    _gapp->layersMgr()->StopDraw();
/**/
    
    _gapp->layersMgr()->SetObjInvalidation(false);
    if(prm->create_nodes){
        (void)create_nodes(edges,nodes,fields,prm->check_nodes);
        if(prm->cut_edges){
            (void)cut_edges(nodes,edges,fields,prm->check_edges);
        }
    }
    if(prm->join_on_nodes){
        (void)join_on_nodes(edges,fields,prm->check_edges);
    }
    else if(prm->join_on_edges){
        (void)join_on_edges(nodes,fields,prm->check_nodes);
    }
    if(prm->check_nodes){
        (void)check_nodes(nodes,fields);
    }
    if(prm->check_edges){
        (void)check_edges(edges,fields);
    }
    _gapp->layersMgr()->SetObjInvalidation(true);
}
Esempio n. 5
0
/*=================================
 * check_and_fix_records --
 *================================*/
static void
check_and_fix_records (void)
{
    tofix = create_list();
    todo.pass = 1;
    check_nodes();
    todo.pass = 2;
    fix_nodes();
    destroy_empty_list(tofix);
}
int		finish_parsing(char **src, t_bin *bin, t_pars *pars)
{
  int		tmp;

  while (src[pars->i])
    {
      if ((tmp = check_wone(src[pars->i], pars->path)) == -1 &&
	  check_nodes(bin) == EXIT_FAILURE)
  	return (EXIT_FAILURE);
      if (go_pars[tmp].func(src, bin, pars) == -1)
	return (-1);
    }
  return (EXIT_SUCCESS);
}