void test_reader_list_broadcast(){ reader_list_initialize(); reader_t* reader_ritardoUnitario_bufferGenerico=reader_initialize("Reader 1",1,10); reader_t* reader_ritardo5_bufferGenerico=reader_initialize("Reader 2", 5,2); add_twoReaders(reader_ritardoUnitario_bufferGenerico,reader_ritardo5_bufferGenerico); reader_list_broadcast(messaggio); ASSERT_BUFFER_CONTAINS_ONLY(reader_ritardoUnitario_bufferGenerico->buffer->read_buffer, messaggio); ASSERT_BUFFER_CONTAINS_ONLY(reader_ritardo5_bufferGenerico->buffer->read_buffer, messaggio); clean_buffer_reader(reader_ritardoUnitario_bufferGenerico, reader_ritardo5_bufferGenerico); remove_twoReaders(reader_ritardoUnitario_bufferGenerico,reader_ritardo5_bufferGenerico); reader_list_destroy(); }
void *dispatch_message(){ int poison=1; //finchè non è arrivata la poison pill while(poison){ msg_t* message=provider_buffer_read(); if (message!=NULL){ if (strcmp(message->content,"POISON_PILL_MSG")==0){//è una poison pill reader_list_kill();//uccido i reader nella lista poison=0; }else{ reader_list_broadcast(message); sleep(1); } } } printf("\ndispatcher terminato=> POISON PILL inoltrata"); pthread_exit(NULL); }