mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 00:32:24 -06:00 
			
		
		
		
	
		
			
	
	
		
			37 lines
		
	
	
	
		
			655 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
	
		
			655 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package runners
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"context"
							 | 
						||
| 
								 | 
							
									"time"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// ContextWithCancel returns a new context.Context impl with cancel.
							 | 
						||
| 
								 | 
							
								func ContextWithCancel() (context.Context, context.CancelFunc) {
							 | 
						||
| 
								 | 
							
									ctx := make(cancelctx)
							 | 
						||
| 
								 | 
							
									return ctx, func() { close(ctx) }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// cancelctx is the simplest possible cancellable context.
							 | 
						||
| 
								 | 
							
								type cancelctx (chan struct{})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (cancelctx) Deadline() (time.Time, bool) {
							 | 
						||
| 
								 | 
							
									return time.Time{}, false
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (ctx cancelctx) Done() <-chan struct{} {
							 | 
						||
| 
								 | 
							
									return ctx
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (ctx cancelctx) Err() error {
							 | 
						||
| 
								 | 
							
									select {
							 | 
						||
| 
								 | 
							
									case <-ctx:
							 | 
						||
| 
								 | 
							
										return context.Canceled
							 | 
						||
| 
								 | 
							
									default:
							 | 
						||
| 
								 | 
							
										return nil
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func (cancelctx) Value(key interface{}) interface{} {
							 | 
						||
| 
								 | 
							
									return nil
							 | 
						||
| 
								 | 
							
								}
							 |