mirror of https://github.com/XTLS/Xray-core
				
				
				
			
		
			
				
	
	
		
			26 lines
		
	
	
		
			492 B
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			492 B
		
	
	
	
		
			Go
		
	
	
package ctx
 | 
						|
 | 
						|
import "context"
 | 
						|
 | 
						|
type SessionKey int
 | 
						|
 | 
						|
// ID of a session.
 | 
						|
type ID uint32
 | 
						|
 | 
						|
const (
 | 
						|
	idSessionKey SessionKey = 0
 | 
						|
)
 | 
						|
 | 
						|
// ContextWithID returns a new context with the given ID.
 | 
						|
func ContextWithID(ctx context.Context, id ID) context.Context {
 | 
						|
	return context.WithValue(ctx, idSessionKey, id)
 | 
						|
}
 | 
						|
 | 
						|
// IDFromContext returns ID in this context, or 0 if not contained.
 | 
						|
func IDFromContext(ctx context.Context) ID {
 | 
						|
	if id, ok := ctx.Value(idSessionKey).(ID); ok {
 | 
						|
		return id
 | 
						|
	}
 | 
						|
	return 0
 | 
						|
}
 |