|
|
|
@@ -63,7 +63,7 @@ func (f *SetValueFuture[T]) Wait(ctx context.Context) (T, error) { |
|
|
|
case cv, ok := <-f.ch: |
|
|
|
if !ok { |
|
|
|
var ret T |
|
|
|
return ret, cv.Err |
|
|
|
return ret, ErrConsumed |
|
|
|
} |
|
|
|
return cv.Value, cv.Err |
|
|
|
|
|
|
|
@@ -73,6 +73,20 @@ func (f *SetValueFuture[T]) Wait(ctx context.Context) (T, error) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func (f *SetValueFuture[T]) TryGetValue() (T, error) { |
|
|
|
select { |
|
|
|
case cv, ok := <-f.ch: |
|
|
|
if !ok { |
|
|
|
var ret T |
|
|
|
return ret, ErrConsumed |
|
|
|
} |
|
|
|
return cv.Value, cv.Err |
|
|
|
default: |
|
|
|
var ret T |
|
|
|
return ret, ErrNotComplete |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
type SetValueFuture2[T1 any, T2 any] struct { |
|
|
|
isCompleted bool |
|
|
|
ch chan ChanValue2[T1, T2] |
|
|
|
@@ -126,7 +140,7 @@ func (f *SetValueFuture2[T1, T2]) Wait(ctx context.Context) (T1, T2, error) { |
|
|
|
select { |
|
|
|
case cv, ok := <-f.ch: |
|
|
|
if !ok { |
|
|
|
return cv.Value1, cv.Value2, cv.Err |
|
|
|
return cv.Value1, cv.Value2, ErrConsumed |
|
|
|
} |
|
|
|
return cv.Value1, cv.Value2, cv.Err |
|
|
|
|
|
|
|
|