Skip to content

Commit 9435245

Browse files
Merge pull request #157 from seanstrickland-wf/AddHasResultToFutures
Add HasResult to Future
2 parents e2126a0 + 655fbf4 commit 9435245

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

futures/futures.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@ func (f *Future) GetResult() (interface{}, error) {
6161
return f.item, f.err
6262
}
6363

64+
// HasResult will return true iff the result exists
65+
func (f *Future) HasResult() bool {
66+
f.lock.Lock()
67+
hasResult := f.triggered
68+
f.lock.Unlock()
69+
return hasResult
70+
}
71+
6472
func (f *Future) setItem(item interface{}, err error) {
6573
f.lock.Lock()
6674
f.triggered = true

futures/futures_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,25 @@ func TestWaitOnGetResult(t *testing.T) {
4949
assert.Nil(t, err)
5050
}
5151

52+
func TestHasResult(t *testing.T) {
53+
completer := make(chan interface{})
54+
f := New(completer, time.Duration(30*time.Minute))
55+
56+
assert.False(t, f.HasResult())
57+
58+
var wg sync.WaitGroup
59+
wg.Add(1)
60+
go func() {
61+
f.GetResult()
62+
wg.Done()
63+
}()
64+
65+
completer <- `test`
66+
wg.Wait()
67+
68+
assert.True(t, f.HasResult())
69+
}
70+
5271
func TestTimeout(t *testing.T) {
5372
completer := make(chan interface{})
5473
f := New(completer, time.Duration(0))

0 commit comments

Comments
 (0)