Skip to content

Commit 1501845

Browse files
committed
The better design pattern would be to handle channel operations without launching unnecessary goroutines
1 parent 9058b2a commit 1501845

File tree

2 files changed

+38
-112
lines changed

2 files changed

+38
-112
lines changed

api/ws/client.go

+10-28
Original file line numberDiff line numberDiff line change
@@ -377,37 +377,27 @@ func (c *ClientWs) process(data []byte, e *events.Basic) bool {
377377
e := events.Error{}
378378
_ = json.Unmarshal(data, &e)
379379
if c.ErrChan != nil {
380-
go func() {
381-
c.ErrChan <- &e
382-
}()
380+
c.ErrChan <- &e
383381
}
384382
return true
385383
case "subscribe":
386384
e := events.Subscribe{}
387385
_ = json.Unmarshal(data, &e)
388386
if c.SubscribeChan != nil {
389-
go func() {
390-
c.SubscribeChan <- &e
391-
}()
387+
c.SubscribeChan <- &e
392388
}
393389
if c.StructuredEventChan != nil {
394-
go func() {
395-
c.StructuredEventChan <- e
396-
}()
390+
c.StructuredEventChan <- e
397391
}
398392
return true
399393
case "unsubscribe":
400394
e := events.Unsubscribe{}
401395
_ = json.Unmarshal(data, &e)
402396
if c.UnsubscribeCh != nil {
403-
go func() {
404-
c.UnsubscribeCh <- &e
405-
}()
397+
c.UnsubscribeCh <- &e
406398
}
407399
if c.StructuredEventChan != nil {
408-
go func() {
409-
c.StructuredEventChan <- e
410-
}()
400+
c.StructuredEventChan <- e
411401
}
412402
return true
413403
case "login":
@@ -420,14 +410,10 @@ func (c *ClientWs) process(data []byte, e *events.Basic) bool {
420410
e := events.Login{}
421411
_ = json.Unmarshal(data, &e)
422412
if c.LoginChan != nil {
423-
go func() {
424-
c.LoginChan <- &e
425-
}()
413+
c.LoginChan <- &e
426414
}
427415
if c.StructuredEventChan != nil {
428-
go func() {
429-
c.StructuredEventChan <- e
430-
}()
416+
c.StructuredEventChan <- e
431417
}
432418
return true
433419
}
@@ -446,17 +432,13 @@ func (c *ClientWs) process(data []byte, e *events.Basic) bool {
446432
e := events.Success{}
447433
_ = json.Unmarshal(data, &e)
448434
if c.SuccessChan != nil {
449-
go func() {
450-
c.SuccessChan <- &e
451-
}()
435+
c.SuccessChan <- &e
452436
}
453437
if c.StructuredEventChan != nil {
454-
go func() {
455-
c.StructuredEventChan <- e
456-
}()
438+
c.StructuredEventChan <- e
457439
}
458440
return true
459441
}
460-
go func() { c.RawEventChan <- e }()
442+
c.RawEventChan <- e
461443
return false
462444
}

api/ws/public.go

+28-84
Original file line numberDiff line numberDiff line change
@@ -383,14 +383,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
383383
return false
384384
}
385385
if c.iCh != nil {
386-
go func() {
387-
c.iCh <- &e
388-
}()
386+
c.iCh <- &e
389387
}
390388
if c.StructuredEventChan != nil {
391-
go func() {
392-
c.StructuredEventChan <- e
393-
}()
389+
c.StructuredEventChan <- e
394390
}
395391
return true
396392
case "tickers":
@@ -399,14 +395,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
399395
return false
400396
}
401397
if c.tCh != nil {
402-
go func() {
403-
c.tCh <- &e
404-
}()
398+
c.tCh <- &e
405399
}
406400
if c.StructuredEventChan != nil {
407-
go func() {
408-
c.StructuredEventChan <- e
409-
}()
401+
c.StructuredEventChan <- e
410402
}
411403
return true
412404
case "open-interest":
@@ -415,14 +407,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
415407
return false
416408
}
417409
if c.oiCh != nil {
418-
go func() {
419-
c.oiCh <- &e
420-
}()
410+
c.oiCh <- &e
421411
}
422412
if c.StructuredEventChan != nil {
423-
go func() {
424-
c.StructuredEventChan <- e
425-
}()
413+
c.StructuredEventChan <- e
426414
}
427415
return true
428416
case "trades":
@@ -431,14 +419,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
431419
return false
432420
}
433421
if c.trCh != nil {
434-
go func() {
435-
c.trCh <- &e
436-
}()
422+
c.trCh <- &e
437423
}
438424
if c.StructuredEventChan != nil {
439-
go func() {
440-
c.StructuredEventChan <- e
441-
}()
425+
c.StructuredEventChan <- e
442426
}
443427
return true
444428
case "estimated-price":
@@ -447,14 +431,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
447431
return false
448432
}
449433
if c.edepCh != nil {
450-
go func() {
451-
c.edepCh <- &e
452-
}()
434+
c.edepCh <- &e
453435
}
454436
if c.StructuredEventChan != nil {
455-
go func() {
456-
c.StructuredEventChan <- e
457-
}()
437+
c.StructuredEventChan <- e
458438
}
459439
return true
460440
case "mark-price":
@@ -463,14 +443,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
463443
return false
464444
}
465445
if c.mpCh != nil {
466-
go func() {
467-
c.mpCh <- &e
468-
}()
446+
c.mpCh <- &e
469447
}
470448
if c.StructuredEventChan != nil {
471-
go func() {
472-
c.StructuredEventChan <- e
473-
}()
449+
c.StructuredEventChan <- e
474450
}
475451
return true
476452
case "price-limit":
@@ -479,14 +455,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
479455
return false
480456
}
481457
if c.plCh != nil {
482-
go func() {
483-
c.plCh <- &e
484-
}()
458+
c.plCh <- &e
485459
}
486460
if c.StructuredEventChan != nil {
487-
go func() {
488-
c.StructuredEventChan <- e
489-
}()
461+
c.StructuredEventChan <- e
490462
}
491463
return true
492464
case "opt-summary":
@@ -495,14 +467,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
495467
return false
496468
}
497469
if c.osCh != nil {
498-
go func() {
499-
c.osCh <- &e
500-
}()
470+
c.osCh <- &e
501471
}
502472
if c.StructuredEventChan != nil {
503-
go func() {
504-
c.StructuredEventChan <- e
505-
}()
473+
c.StructuredEventChan <- e
506474
}
507475
return true
508476
case "funding-rate":
@@ -511,14 +479,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
511479
return false
512480
}
513481
if c.frCh != nil {
514-
go func() {
515-
c.frCh <- &e
516-
}()
482+
c.frCh <- &e
517483
}
518484
if c.StructuredEventChan != nil {
519-
go func() {
520-
c.StructuredEventChan <- e
521-
}()
485+
c.StructuredEventChan <- e
522486
}
523487
return true
524488
case "index-tickers":
@@ -527,14 +491,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
527491
return false
528492
}
529493
if c.itCh != nil {
530-
go func() {
531-
c.itCh <- &e
532-
}()
494+
c.itCh <- &e
533495
}
534496
if c.StructuredEventChan != nil {
535-
go func() {
536-
c.StructuredEventChan <- e
537-
}()
497+
c.StructuredEventChan <- e
538498
}
539499
return true
540500
default:
@@ -545,14 +505,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
545505
return false
546506
}
547507
if c.mpcCh != nil {
548-
go func() {
549-
c.mpcCh <- &e
550-
}()
508+
c.mpcCh <- &e
551509
}
552510
if c.StructuredEventChan != nil {
553-
go func() {
554-
c.StructuredEventChan <- e
555-
}()
511+
c.StructuredEventChan <- e
556512
}
557513
return true
558514
}
@@ -562,14 +518,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
562518
return false
563519
}
564520
if c.icCh != nil {
565-
go func() {
566-
c.icCh <- &e
567-
}()
521+
c.icCh <- &e
568522
}
569523
if c.StructuredEventChan != nil {
570-
go func() {
571-
c.StructuredEventChan <- e
572-
}()
524+
c.StructuredEventChan <- e
573525
}
574526
return true
575527
}
@@ -579,14 +531,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
579531
return false
580532
}
581533
if c.cCh != nil {
582-
go func() {
583-
c.cCh <- &e
584-
}()
534+
c.cCh <- &e
585535
}
586536
if c.StructuredEventChan != nil {
587-
go func() {
588-
c.StructuredEventChan <- e
589-
}()
537+
c.StructuredEventChan <- e
590538
}
591539
return true
592540
}
@@ -596,14 +544,10 @@ func (c *Public) Process(data []byte, e *events.Basic) bool {
596544
return false
597545
}
598546
if c.obCh != nil {
599-
go func() {
600-
c.obCh <- &e
601-
}()
547+
c.obCh <- &e
602548
}
603549
if c.StructuredEventChan != nil {
604-
go func() {
605-
c.StructuredEventChan <- e
606-
}()
550+
c.StructuredEventChan <- e
607551
}
608552
return true
609553
}

0 commit comments

Comments
 (0)