Add direct ctx managers for RB channels
							parent
							
								
									2a9a78651b
								
							
						
					
					
						commit
						be7fc89ae9
					
				|  | @ -55,5 +55,7 @@ if platform.system() == 'Linux': | |||
|         RingBuffBytesSender as RingBuffBytesSender, | ||||
|         RingBuffBytesReceiver as RingBuffBytesReceiver, | ||||
|         RingBuffChannel as RingBuffChannel, | ||||
|         attach_to_ringbuf_channel as attach_to_ringbuf_channel | ||||
|         attach_to_ringbuf_schannel as attach_to_ringbuf_schannel, | ||||
|         attach_to_ringbuf_rchannel as attach_to_ringbuf_rchannel, | ||||
|         attach_to_ringbuf_channel as attach_to_ringbuf_channel, | ||||
|     ) | ||||
|  |  | |||
|  | @ -550,6 +550,36 @@ class RingBuffBytesReceiver(trio.abc.ReceiveChannel[bytes]): | |||
|         await self._receiver.aclose() | ||||
| 
 | ||||
| 
 | ||||
| @acm | ||||
| async def attach_to_ringbuf_rchannel( | ||||
|     token: RBToken, | ||||
|     cleanup: bool = True | ||||
| ): | ||||
|     ''' | ||||
|     Attach a RingBuffBytesReceiver from a previously opened | ||||
|     RBToken. | ||||
|     ''' | ||||
|     async with attach_to_ringbuf_receiver( | ||||
|         token, cleanup=cleanup | ||||
|     ) as receiver: | ||||
|         yield RingBuffBytesReceiver(receiver) | ||||
| 
 | ||||
| 
 | ||||
| @acm | ||||
| async def attach_to_ringbuf_schannel( | ||||
|     token: RBToken, | ||||
|     cleanup: bool = True | ||||
| ): | ||||
|     ''' | ||||
|     Attach a RingBuffBytesSender from a previously opened | ||||
|     RBToken. | ||||
|     ''' | ||||
|     async with attach_to_ringbuf_sender( | ||||
|         token, cleanup=cleanup | ||||
|     ) as sender: | ||||
|         yield RingBuffBytesSender(sender) | ||||
| 
 | ||||
| 
 | ||||
| class RingBuffChannel(trio.abc.Channel[bytes]): | ||||
|     ''' | ||||
|     Combine `RingBuffBytesSender` and `RingBuffBytesReceiver` | ||||
|  | @ -588,16 +618,13 @@ async def attach_to_ringbuf_channel( | |||
| 
 | ||||
|     ''' | ||||
|     async with ( | ||||
|         attach_to_ringbuf_receiver( | ||||
|         attach_to_ringbuf_rchannel( | ||||
|             token_in, | ||||
|             cleanup=cleanup_in | ||||
|         ) as receiver, | ||||
|         attach_to_ringbuf_sender( | ||||
|         attach_to_ringbuf_schannel( | ||||
|             token_out, | ||||
|             cleanup=cleanup_out | ||||
|         ) as sender, | ||||
|     ): | ||||
|         yield RingBuffChannel( | ||||
|             RingBuffBytesSender(sender), | ||||
|             RingBuffBytesReceiver(receiver) | ||||
|         ) | ||||
|         yield RingBuffChannel(sender, receiver) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue