move appcontext implementation to separate source file
This commit is contained in:
		
							parent
							
								
									34ee4641dc
								
							
						
					
					
						commit
						2a188cfa1a
					
				
					 2 changed files with 53 additions and 48 deletions
				
			
		
							
								
								
									
										53
									
								
								lib/context/appcontext.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								lib/context/appcontext.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,53 @@ | |||
| package context | ||||
| 
 | ||||
| import ( | ||||
| 	"sync" | ||||
| 
 | ||||
| 	"git.sr.ht/~cco/go-scopes/lib" | ||||
| ) | ||||
| 
 | ||||
| type appContext struct { | ||||
| 	*context | ||||
| 	services  Services | ||||
| 	waitgroup *sync.WaitGroup | ||||
| 	doneCh    chan struct{} | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) ChildContext(cfg lib.Config) Context { | ||||
| 	cctx := makeCtx(cfg, ctx) | ||||
| 	ctx.services[cfg.Name()] = cctx | ||||
| 	ctx.children = append(ctx.children, cctx) | ||||
| 	return cctx | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) Services() Services { | ||||
| 	return ctx.services | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) WithState(state ContextState) Context { | ||||
| 	ctx.state = state | ||||
| 	return ctx | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) WaitGroup() *sync.WaitGroup { | ||||
| 	return ctx.waitgroup | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) Done() <-chan struct{} { | ||||
| 	return ctx.doneCh | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) Stop() { | ||||
| 	close(ctx.doneCh) | ||||
| } | ||||
| 
 | ||||
| func AppContext(cfg lib.Config) Context { | ||||
| 	ctx := &appContext{ | ||||
| 		context:   makeCtx(cfg, nil), | ||||
| 		services:  Services{}, | ||||
| 		waitgroup: &sync.WaitGroup{}, | ||||
| 		doneCh:    make(chan struct{}), | ||||
| 	} | ||||
| 	ctx.services[cfg.Name()] = ctx | ||||
| 	return ctx | ||||
| } | ||||
|  | @ -72,54 +72,6 @@ func makeCtx(cfg lib.Config, parent Context) *context { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| // top-level application context | ||||
| 
 | ||||
| type appContext struct { | ||||
| 	*context | ||||
| 	services  Services | ||||
| 	waitgroup *sync.WaitGroup | ||||
| 	doneCh    chan struct{} | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) ChildContext(cfg lib.Config) Context { | ||||
| 	cctx := makeCtx(cfg, ctx) | ||||
| 	ctx.services[cfg.Name()] = cctx | ||||
| 	ctx.children = append(ctx.children, cctx) | ||||
| 	return cctx | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) Services() Services { | ||||
| 	return ctx.services | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) WithState(state ContextState) Context { | ||||
| 	ctx.state = state | ||||
| 	return ctx | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) WaitGroup() *sync.WaitGroup { | ||||
| 	return ctx.waitgroup | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) Done() <-chan struct{} { | ||||
| 	return ctx.doneCh | ||||
| } | ||||
| 
 | ||||
| func (ctx *appContext) Stop() { | ||||
| 	close(ctx.doneCh) | ||||
| } | ||||
| 
 | ||||
| func AppContext(cfg lib.Config) Context { | ||||
| 	ctx := &appContext{ | ||||
| 		context:   makeCtx(cfg, nil), | ||||
| 		services:  Services{}, | ||||
| 		waitgroup: &sync.WaitGroup{}, | ||||
| 		doneCh:    make(chan struct{}), | ||||
| 	} | ||||
| 	ctx.services[cfg.Name()] = ctx | ||||
| 	return ctx | ||||
| } | ||||
| 
 | ||||
| // implement interface context.Context from standard library | ||||
| 
 | ||||
| func (ctx *context) Deadline() (deadline time.Time, ok bool) { | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue