Пример #1
0
uint8 Process_Event()
{
    uint8 current_event;
    current_event = Pop_T();

    switch(current_event)
    {
			case EVENT_BEACON_SEND:
				SendBeacon();
				break;
			case EVENT_JOINREQUEST_HANDLER:
				JoinRequestHandler();
				break;
			case EVENT_JOINREQUESTACKOK_HANDLER:
				JoinRequestACKOKHandler();
				break;
			case EVENT_DATA_HANDLER:
				DataHandler();
				break;
			case EVENT_UPLOAD_DATA:
				Upload_Data();
				break;
			case EVENT_REJOIN_SEND:
				SendReJoin();
				break;
			
    }
    return current_event;
}
Пример #2
0
void *data_uploading_thread()
{
	printf("\nData Uploading Thread is running");
	//----------------READ DATA SERVER LIST FILE----------------//
	printf("\nRead data server list:");
	int numberofnode;
	id_ip *data_server_list;
	data_server_list =  read_setting_file(list_data_server,&numberofnode);
	if(data_server_list == NULL)
	{
		printf("\nCannot read database server list file");
		exit(1);
	}
	//-------------------upload file to server----------------------//
	while(1)
	{
		if(is_shutdown == 1 )
			break;
		pthread_mutex_lock(&condition_mutex_for_upload);
		while(is_queue_empty(uploading_queue)==1)
		{
			pthread_cond_wait(&condition_cond_for_upload, &condition_mutex_for_upload);
		}
		pthread_mutex_lock(&condition_mutex_for_upload);
	
		pthread_mutex_lock(&is_loading_mutex);
		is_uploading =1;
		pthread_mutex_unlock(&is_loading_mutex);

		node *n = create_node_default();
              
		n=dequeue(&uploading_queue_mutex,uploading_queue);
        if( n == NULL)
		{
				printf("\nQueue is empty\n");
				pthread_mutex_lock(&is_loading_mutex);
				is_uploading = 0;
				pthread_mutex_unlock(&is_loading_mutex);
				continue;
        }             
		ticket *t = n->value;
		print_ticket(t);
		Upload_Data(data_server_list,t->server_id,itoa(server_id));
		t->hop_count =1;
		printf("\nUpload finish, send ticket to neighbor\n");		
		print_ticket(t);
		//pass ticket to Ticket Forwarder
		enqueue(&forwarding_queue_mutex,forwarding_queue,n);                   
		pthread_cond_signal( &condition_cond_for_forward );
		pthread_mutex_lock(&is_loading_mutex);
		is_uploading = 0;
		pthread_mutex_unlock(&is_loading_mutex);
		free(n);
	}

}