(minQueueSize uint, inC <-chan T, outC chan<- T)
| 160 | } |
| 161 | |
| 162 | func queueingDispatcher[T any](minQueueSize uint, inC <-chan T, outC chan<- T) { |
| 163 | q := newRingqueue[T](minQueueSize) |
| 164 | for { |
| 165 | in, ok := <-inC |
| 166 | if !ok { |
| 167 | return |
| 168 | } |
| 169 | |
| 170 | q.Add(in) |
| 171 | for q.Len() != 0 { |
| 172 | out, _ := q.Peek() |
| 173 | select { |
| 174 | case outC <- out: |
| 175 | q.Remove() |
| 176 | case in, ok := <-inC: |
| 177 | if !ok { |
| 178 | return |
| 179 | } |
| 180 | |
| 181 | q.Add(in) |
| 182 | } |
| 183 | } |
| 184 | } |
| 185 | } |
no test coverage detected
searching dependent graphs…