Skip to content

Commit 715cde7

Browse files
feat: add context management to non buffered channels
1 parent 324abf5 commit 715cde7

File tree

5 files changed

+58
-21
lines changed

5 files changed

+58
-21
lines changed

rolling-shutter/keyperimpl/gnosis/keyper.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -295,17 +295,29 @@ func (kpr *Keyper) processInputs(ctx context.Context) error {
295295
}
296296
}
297297

298-
func (kpr *Keyper) channelNewBlock(_ context.Context, ev *syncevent.LatestBlock) error {
299-
kpr.newBlocks <- ev
300-
return nil
298+
func (kpr *Keyper) channelNewBlock(ctx context.Context, ev *syncevent.LatestBlock) error {
299+
select {
300+
case kpr.newBlocks <- ev:
301+
return nil
302+
case <-ctx.Done():
303+
return ctx.Err()
304+
}
301305
}
302306

303-
func (kpr *Keyper) channelNewKeyperSet(_ context.Context, ev *syncevent.KeyperSet) error {
304-
kpr.newKeyperSets <- ev
305-
return nil
307+
func (kpr *Keyper) channelNewKeyperSet(ctx context.Context, ev *syncevent.KeyperSet) error {
308+
select {
309+
case kpr.newKeyperSets <- ev:
310+
return nil
311+
case <-ctx.Done():
312+
return ctx.Err()
313+
}
306314
}
307315

308-
func (kpr *Keyper) channelNewEonPublicKey(_ context.Context, key keyper.EonPublicKey) error {
309-
kpr.newEonPublicKeys <- key
310-
return nil
316+
func (kpr *Keyper) channelNewEonPublicKey(ctx context.Context, key keyper.EonPublicKey) error {
317+
select {
318+
case kpr.newEonPublicKeys <- key:
319+
return nil
320+
case <-ctx.Done():
321+
return ctx.Err()
322+
}
311323
}

rolling-shutter/keyperimpl/gnosis/newslot.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,12 @@ func (kpr *Keyper) triggerDecryption(
266266
Int("num-identities", len(trigger.IdentityPreimages)).
267267
Int64("tx-pointer", txPointer).
268268
Msg("sending decryption trigger")
269-
kpr.decryptionTriggerChannel <- event
269+
270+
select {
271+
case kpr.decryptionTriggerChannel <- event:
272+
case <-ctx.Done():
273+
return ctx.Err()
274+
}
270275

271276
return nil
272277
}

rolling-shutter/keyperimpl/shutterservice/keyper.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -274,17 +274,29 @@ func (kpr *Keyper) processInputs(ctx context.Context) error {
274274
}
275275
}
276276

277-
func (kpr *Keyper) channelNewEonPublicKey(_ context.Context, key keyper.EonPublicKey) error {
278-
kpr.newEonPublicKeys <- key
279-
return nil
277+
func (kpr *Keyper) channelNewEonPublicKey(ctx context.Context, key keyper.EonPublicKey) error {
278+
select {
279+
case kpr.newEonPublicKeys <- key:
280+
return nil
281+
case <-ctx.Done():
282+
return ctx.Err()
283+
}
280284
}
281285

282-
func (kpr *Keyper) channelNewBlock(_ context.Context, ev *syncevent.LatestBlock) error {
283-
kpr.newBlocks <- ev
284-
return nil
286+
func (kpr *Keyper) channelNewBlock(ctx context.Context, ev *syncevent.LatestBlock) error {
287+
select {
288+
case kpr.newBlocks <- ev:
289+
return nil
290+
case <-ctx.Done():
291+
return ctx.Err()
292+
}
285293
}
286294

287-
func (kpr *Keyper) channelNewKeyperSet(_ context.Context, ev *syncevent.KeyperSet) error {
288-
kpr.newKeyperSets <- ev
289-
return nil
295+
func (kpr *Keyper) channelNewKeyperSet(ctx context.Context, ev *syncevent.KeyperSet) error {
296+
select {
297+
case kpr.newKeyperSets <- ev:
298+
return nil
299+
case <-ctx.Done():
300+
return ctx.Err()
301+
}
290302
}

rolling-shutter/medley/channel/channel.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ func Forward[T any](ctx context.Context,
1212
if !ok {
1313
return nil
1414
}
15-
send <- val
15+
select {
16+
case send <- val:
17+
case <-ctx.Done():
18+
return ctx.Err()
19+
}
1620
case <-ctx.Done():
1721
return ctx.Err()
1822
}

rolling-shutter/medley/slotticker/slotticker.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,11 @@ func (t *SlotTicker) run(ctx context.Context) error {
9292

9393
timeToNextSlot := nextTickTime.Sub(now)
9494
timer.Reset(timeToNextSlot)
95-
<-timer.C
95+
select {
96+
case <-timer.C:
97+
case <-ctx.Done():
98+
return ctx.Err()
99+
}
96100

97101
if err := t.tick(ctx, nextSlotNumber); err != nil {
98102
return err

0 commit comments

Comments
 (0)