42 lines
		
	
	
		
			848 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			848 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								function foo (options) {
							 | 
						||
| 
								 | 
							
								  this.producer=options.producer;
							 | 
						||
| 
								 | 
							
								  this.data=null;
							 | 
						||
| 
								 | 
							
								  this.act = {
							 | 
						||
| 
								 | 
							
								    main : function () {
							 | 
						||
| 
								 | 
							
								      log('starting',this.producer)
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    produce : function () {
							 | 
						||
| 
								 | 
							
								      this.data={number:random(1,100)}
							 | 
						||
| 
								 | 
							
								      out(['SENSOR',this.data])
							 | 
						||
| 
								 | 
							
								      this.data.number++;
							 | 
						||
| 
								 | 
							
								      out(['SENSOR',this.data])
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    forkme : function () {
							 | 
						||
| 
								 | 
							
								      fork({
							 | 
						||
| 
								 | 
							
								        producer:false,
							 | 
						||
| 
								 | 
							
								        data:null
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    consume : function () {
							 | 
						||
| 
								 | 
							
								      inp.try(3000, ['SENSOR',_],function (t) {
							 | 
						||
| 
								 | 
							
								        this.data=t;
							 | 
						||
| 
								 | 
							
								      },true);
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    end : function () {
							 | 
						||
| 
								 | 
							
								      log('terminate',this.data);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.trans = {
							 | 
						||
| 
								 | 
							
								    main : produce,
							 | 
						||
| 
								 | 
							
								    produce : forkme,
							 | 
						||
| 
								 | 
							
								    forkme : function () {
							 | 
						||
| 
								 | 
							
								      return this.producer?end:consume
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    consume : end,
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.next=main;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								compile(foo,{verbose:1})
							 | 
						||
| 
								 | 
							
								create('foo',{producer:true})
							 | 
						||
| 
								 | 
							
								start()
							 |