예제 #1
0
파일: map.hpp 프로젝트: Nikhil14/Map
void Map<T,H>::clear()
{
    delete_all_nodes(this->root->left);
    delete_all_nodes(this->root->right);
    this->head->next_iter=this->tail;
    this->tail->prev_iter=this->head;
    this->root = nullptr;
}
예제 #2
0
파일: map.hpp 프로젝트: Nikhil14/Map
void Map<T,H>::delete_all_nodes(Node *n)
{   
    if(n == nullptr)
        return;
    delete_all_nodes(n->left);
    delete_all_nodes(n->right);
    delete_node(n);
}
예제 #3
0
파일: map.c 프로젝트: bluedroplet/emergence
void kill_map()
{
	delete_all_nodes();
	delete_all_conns();
	delete_all_curves();
	delete_all_points();
	delete_all_fills();
	delete_all_lines();
	delete_all_tiles();
	delete_all_objects();
	
	free_string(map_filename);
	free_string(map_path);
}
예제 #4
0
파일: map.c 프로젝트: bluedroplet/emergence
void clear_map()		// always called when not working
{
	delete_all_nodes();
	delete_all_conns();
	delete_all_curves();
	delete_all_points();
	delete_all_fills();
	delete_all_lines();
	delete_all_tiles();
	delete_all_objects();

	map_saved = 1;
	string_clear(map_filename);
	string_clear(map_path);
	char *cwd =  get_current_dir_name();
	string_cat_text(map_path, cwd);
	free(cwd);
}
void processNodeAddDeletePayload(addDeleteNodePayload *payload, int payload_size) 
{
    int i;
    thread_data *tdata;
    char *buf;
    char IP[16];
    pthread_t thread;
    pthread_mutex_lock(&node_list_mutex);   
    printf("\n********--------------------In AddDeletePayload-----------------------------************\n");

    for(i=0;i<sizeof(*payload);i++) {	
    	printf("%0x,", *(payload + i));
    }
    
    getchar();

    if ((payload->flags & ADD_PAYLOAD) && (payload->flags & COMPLETE_PAYLOAD)) {
        delete_all_nodes(&server_topology);
    }
  
	   

    for (i = 0; i < payload->numOfNodes; i++) {
       if (payload->flags & DELETE_PAYLOAD) {
           remove_from_list(&server_topology, payload->ID[i]);
  
          if (payload->flags & LEAVE_NOTIFICATION) {
              //LOG(INFO, "Node %s is voluntarily leaving the group", payload->ID[i]);
          }
          else if (payload->flags & LEAVE_NOTIFICATION) {
              //LOG(INFO, "Node %s has failed. Removing its entry", payload->ID[i]);
 
               
          }
       }else if (payload->flags & ADD_PAYLOAD) {
           //LOG(INFO, "Node %s is being added as a member in the group", payload->ID[i]);
           add_to_list(&server_topology, payload->ID[i]);             
           pthread_mutex_lock(&timestamp_mutex);
           strcpy(savedHeartbeat[0].ipAddr, payload->ID[i] + 4); 
           pthread_mutex_unlock(&timestamp_mutex);

       }
    }
    
    if(myself != NULL) {
        memcpy(IP, myself->next->IP, 16); 
        pthread_mutex_lock(&timestamp_mutex);
        strcpy(savedHeartbeat[0].ipAddr, myself->prev->IP); 
        pthread_mutex_unlock(&timestamp_mutex);
    }
           
    pthread_mutex_unlock(&node_list_mutex); 
    if (payload->ttl > 0 && server_topology->num_of_nodes > 0) {
        payload->ttl--;
        buf =  calloc(1,payload_size);
        memcpy(buf, payload, payload_size);
        tdata = calloc(1,sizeof(thread_data));
        memcpy(tdata->ip, IP, 16);
        tdata->payload_size = payload_size;
        tdata->payload = buf;
        (void)pthread_create(&thread, NULL, send_node_update_payload, (void*)tdata);
         
    }
}