#include "GeneratoreTraffico.h" #include GeneratoreTraffico::GeneratoreTraffico(double contanti, double viacard, double telepass, double freq, Svincolo *sv, Sincronizzatore * s) : Compito( s ), probContanti(contanti), probViaCard(viacard), probTelePass(telepass), frequenza(freq), svincolo(sv) { } GeneratoreTraffico::~GeneratoreTraffico() { } bool GeneratoreTraffico::svolgiCompito() { cout << tempoProssimoEvento() << ") evento: *** generazione traffico ***" << endl; double prob; bool pagaContanti, pagaViaCard, pagaTelePass; do { pagaContanti = ( drand48() < probContanti ); pagaViaCard = ( drand48() < probViaCard ); pagaTelePass = ( drand48() < probTelePass ); } while ( !( (pagaContanti) || (pagaViaCard) || (pagaTelePass) ) ); if( svincolo != 0 ) { Veicolo * v = new Veicolo( pagaContanti, pagaViaCard, pagaTelePass ); cout << "Generato veicolo con: "; if ( pagaContanti ) cout << "contanti "; if ( pagaViaCard ) cout << "viacard "; if ( pagaTelePass ) cout << "telepass "; cout << endl; svincolo->accodaVeicolo(v); } cout << " generazione completa" << endl; return true; } double GeneratoreTraffico::deltaT() const { double t = -log( 1 - drand48() ) / frequenza; cout << " prossima auto tra: " << t << "s " << endl; return t; }