Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. func DataManager(addData <-chan App, takeData chan<- App, askAdd <-chan int, askTake <-chan int) {
  2.  
  3. var data [ARRAYSIZE]App
  4. count := 0
  5. maxValue := len(data)
  6. status := true
  7.  
  8. for status == true { //kol nepasiektas paskutinis elementas
  9. var activeChannels = []<-chan int{nil}
  10. if count > 0 {
  11. activeChannels = append(activeChannels, askTake)
  12. } else {
  13. activeChannels = append(activeChannels, nil)
  14. }
  15. if count < maxValue && status == true {
  16. activeChannels = append(activeChannels, askAdd)
  17. } else {
  18. activeChannels = append(activeChannels, nil)
  19. }
  20. var cases []reflect.SelectCase
  21. for _, c := range activeChannels {
  22. cases = append(cases, reflect.SelectCase{
  23. Dir: reflect.SelectRecv,
  24. Chan: reflect.ValueOf(c),
  25. })
  26. }
  27. chooserIndex, _, _ := reflect.Select(cases)
  28. switch chooserIndex {
  29.  
  30. case 1:
  31. if globalcounterremoved == elementcounter {
  32. status = false
  33. } else {
  34. user := data[count-1]
  35. takeData <- user
  36. count = count - 1
  37. globalcounterremoved++
  38. }
  39.  
  40. case 2:
  41. var app App
  42. app = <-addData
  43. globalcounteradd++
  44. if globalcounterremoved == elementcounter {
  45. data[count] = app
  46. count = count + 1
  47. status = false
  48. } else {
  49. data[count] = app
  50. count = count + 1
  51. }
  52. }
  53. }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement