Преглед на файлове

use value delegate to separate value and cancel

This is a issue with the usage of context for value storage and cancell signaling. This issue will be addressed in a permanent way in v5.
Shelikhoo преди 4 години
родител
ревизия
90b560cd75
променени са 1 файла, в които са добавени 10 реда и са изтрити 2 реда
  1. 10 2
      context.go

+ 10 - 2
context.go

@@ -49,6 +49,14 @@ func toContext(ctx context.Context, v *Instance) context.Context {
 Internal API
 */
 func ToBackgroundDetachedContext(ctx context.Context) context.Context {
-	instance := MustFromContext(ctx)
-	return toContext(context.Background(), instance)
+	return &temporaryValueDelegationFix{context.Background(), ctx}
+}
+
+type temporaryValueDelegationFix struct {
+	context.Context
+	value context.Context
+}
+
+func (t *temporaryValueDelegationFix) Value(key interface{}) interface{} {
+	return t.value.Value(key)
 }