Handle no sampler subs case on history broadcasts
When the market isn't open the feed layer won't create a subscriber entry in the sampler broadcast loop and so if a manual call to ``broadcast()`` is made (like when trying to update a chart from a history prepend) we need to handle that case and just broadcast a random `-1` for now..BDincr_update_backup
							parent
							
								
									e8aaf42cc6
								
							
						
					
					
						commit
						468cd3a381
					
				| 
						 | 
				
			
			@ -146,13 +146,21 @@ async def broadcast(
 | 
			
		|||
    # a given sample period.
 | 
			
		||||
    subs = sampler.subscribers.get(delay_s, ())
 | 
			
		||||
 | 
			
		||||
    last = -1
 | 
			
		||||
 | 
			
		||||
    if shm is None:
 | 
			
		||||
        lowest = min(sampler.ohlcv_shms.keys())
 | 
			
		||||
        periods = sampler.ohlcv_shms.keys()
 | 
			
		||||
        # if this is an update triggered by a history update there
 | 
			
		||||
        # might not actually be any sampling bus setup since there's
 | 
			
		||||
        # no "live feed" active yet.
 | 
			
		||||
        if periods:
 | 
			
		||||
            lowest = min(periods)
 | 
			
		||||
            shm = sampler.ohlcv_shms[lowest][0]
 | 
			
		||||
            last = shm._last.value
 | 
			
		||||
 | 
			
		||||
    for stream in subs:
 | 
			
		||||
        try:
 | 
			
		||||
            await stream.send({'index': shm._last.value})
 | 
			
		||||
            await stream.send({'index': last})
 | 
			
		||||
        except (
 | 
			
		||||
            trio.BrokenResourceError,
 | 
			
		||||
            trio.ClosedResourceError
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue