| 
									
										
										
										
											2016-01-28 18:23:24 +00:00
										 |  |  | package server | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2018-03-03 11:53:52 +00:00
										 |  |  | 	"context" | 
					
						
							| 
									
										
										
										
											2019-05-27 21:17:57 +08:00
										 |  |  | 	"sync" | 
					
						
							| 
									
										
										
										
											2016-01-28 18:23:24 +00:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type serverKey struct{} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-27 21:17:57 +08:00
										 |  |  | func wait(ctx context.Context) *sync.WaitGroup { | 
					
						
							| 
									
										
										
										
											2017-05-31 19:21:41 +01:00
										 |  |  | 	if ctx == nil { | 
					
						
							| 
									
										
										
										
											2019-05-27 21:17:57 +08:00
										 |  |  | 		return nil | 
					
						
							| 
									
										
										
										
											2017-05-31 19:21:41 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2019-05-27 21:17:57 +08:00
										 |  |  | 	wg, ok := ctx.Value("wait").(*sync.WaitGroup) | 
					
						
							| 
									
										
										
										
											2017-05-31 19:33:11 +01:00
										 |  |  | 	if !ok { | 
					
						
							| 
									
										
										
										
											2019-05-27 21:17:57 +08:00
										 |  |  | 		return nil | 
					
						
							| 
									
										
										
										
											2017-05-31 19:33:11 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2019-05-27 21:17:57 +08:00
										 |  |  | 	return wg | 
					
						
							| 
									
										
										
										
											2017-05-31 19:21:41 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-28 18:23:24 +00:00
										 |  |  | func FromContext(ctx context.Context) (Server, bool) { | 
					
						
							|  |  |  | 	c, ok := ctx.Value(serverKey{}).(Server) | 
					
						
							|  |  |  | 	return c, ok | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func NewContext(ctx context.Context, s Server) context.Context { | 
					
						
							|  |  |  | 	return context.WithValue(ctx, serverKey{}, s) | 
					
						
							|  |  |  | } |