watch_few.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package memdb
  2. //go:generate sh -c "go run watch-gen/main.go >watch_few.go"
  3. import (
  4. "context"
  5. )
  6. // aFew gives how many watchers this function is wired to support. You must
  7. // always pass a full slice of this length, but unused channels can be nil.
  8. const aFew = 32
  9. // watchFew is used if there are only a few watchers as a performance
  10. // optimization.
  11. func watchFew(ctx context.Context, ch []<-chan struct{}) error {
  12. select {
  13. case <-ch[0]:
  14. return nil
  15. case <-ch[1]:
  16. return nil
  17. case <-ch[2]:
  18. return nil
  19. case <-ch[3]:
  20. return nil
  21. case <-ch[4]:
  22. return nil
  23. case <-ch[5]:
  24. return nil
  25. case <-ch[6]:
  26. return nil
  27. case <-ch[7]:
  28. return nil
  29. case <-ch[8]:
  30. return nil
  31. case <-ch[9]:
  32. return nil
  33. case <-ch[10]:
  34. return nil
  35. case <-ch[11]:
  36. return nil
  37. case <-ch[12]:
  38. return nil
  39. case <-ch[13]:
  40. return nil
  41. case <-ch[14]:
  42. return nil
  43. case <-ch[15]:
  44. return nil
  45. case <-ch[16]:
  46. return nil
  47. case <-ch[17]:
  48. return nil
  49. case <-ch[18]:
  50. return nil
  51. case <-ch[19]:
  52. return nil
  53. case <-ch[20]:
  54. return nil
  55. case <-ch[21]:
  56. return nil
  57. case <-ch[22]:
  58. return nil
  59. case <-ch[23]:
  60. return nil
  61. case <-ch[24]:
  62. return nil
  63. case <-ch[25]:
  64. return nil
  65. case <-ch[26]:
  66. return nil
  67. case <-ch[27]:
  68. return nil
  69. case <-ch[28]:
  70. return nil
  71. case <-ch[29]:
  72. return nil
  73. case <-ch[30]:
  74. return nil
  75. case <-ch[31]:
  76. return nil
  77. case <-ctx.Done():
  78. return ctx.Err()
  79. }
  80. }