You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							50 lines
						
					
					
						
							997 B
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							50 lines
						
					
					
						
							997 B
						
					
					
				
								
							 | 
						|
								ma
							 | 
						|
								
							 | 
						|
								const int N = 2; // num packages
							 | 
						|
								
							 | 
						|
								const double inRate = 4;
							 | 
						|
								const double processingRate = 5;
							 | 
						|
								
							 | 
						|
								module streamingclient
							 | 
						|
									
							 | 
						|
									s : [0..3]; // current state:
							 | 
						|
									// 0: decide whether to start	
							 | 
						|
									// 1: buffering
							 | 
						|
									// 2: running
							 | 
						|
									// 3: done
							 | 
						|
									
							 | 
						|
									n : [0..N]; // number of received packages
							 | 
						|
									k : [0..N]; // number of processed packages 	
							 | 
						|
									
							 | 
						|
									[buffer]  s=0 & n<N -> 1 : (s'=1);
							 | 
						|
									[start] s=0 & k<n -> 1 : (s'=2) & (k'=k+1);
							 | 
						|
									
							 | 
						|
									<> s=1 -> inRate : (n'=n+1) & (s'=0);
							 | 
						|
									
							 | 
						|
									<> s=2 & n<N & k<n -> inRate : (n'=n+1) + processingRate : (k'=k+1);
							 | 
						|
									<> s=2 & n<N & k=n -> inRate : (n'=n+1) + processingRate : (s'=0); 
							 | 
						|
									<> s=2 & n=N & k<n -> processingRate : (k'=k+1);
							 | 
						|
									<> s=2 & n=N & k=N -> processingRate : (s'=3);
							 | 
						|
									
							 | 
						|
									<> s=3 -> 1 : true;
							 | 
						|
								endmodule
							 | 
						|
								
							 | 
						|
								// All packages received and buffer empty
							 | 
						|
								label "done" = (s=3);
							 | 
						|
								
							 | 
						|
								rewards "buffering"
							 | 
						|
									s=1 : 1;
							 | 
						|
								endrewards
							 | 
						|
								
							 | 
						|
								rewards "initialbuffering"
							 | 
						|
									s=1 & k = 0: 1;
							 | 
						|
								endrewards
							 | 
						|
								
							 | 
						|
								rewards "intermediatebuffering"
							 | 
						|
									s=1 & k > 0: 1;
							 | 
						|
								endrewards
							 | 
						|
								
							 | 
						|
								rewards "numRestarts"
							 | 
						|
									[start] k > 0 : 1;
							 | 
						|
								endrewards
							 |