Guest User

Untitled

a guest
Jun 22nd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "time"
  6.  
  7. resourceprioritize "github.com/hauxe/go-resource-prioritize"
  8. )
  9.  
  10. // PrioritizedEntity defines prioritized entity
  11. type PrioritizedEntity struct {
  12. ID int
  13. Priority int
  14. }
  15.  
  16. // GetPriority gets identity priority
  17. func (p *PrioritizedEntity) GetPriority() int {
  18. return p.Priority
  19. }
  20.  
  21. // AccessResource access the resource
  22. func (p *PrioritizedEntity) AccessResource(resource interface{}) {
  23. res, ok := resource.(map[int]int)
  24. if !ok {
  25. fmt.Println("Error resource not expected")
  26. }
  27. res[p.ID]++
  28. }
  29.  
  30. func main() {
  31. sharedResource := make(map[int]int, 3)
  32. gateKeeper := resourceprioritize.New(100)
  33. gateKeeper.Start(sharedResource, time.Microsecond)
  34. defer gateKeeper.Stop()
  35. // 3 different prioritized entity
  36. highEntity := &PrioritizedEntity{
  37. ID: 1,
  38. Priority: 3,
  39. }
  40. mediumEntity := &PrioritizedEntity{
  41. ID: 2,
  42. Priority: 2,
  43. }
  44. lowEntity := &PrioritizedEntity{
  45. ID: 3,
  46. Priority: 1,
  47. }
  48.  
  49. // start greeding resource count
  50. for i := 0; i < 100; i++ {
  51. go gateKeeper.Register(lowEntity)
  52. go gateKeeper.Register(mediumEntity)
  53. go gateKeeper.Register(highEntity)
  54. }
  55. time.Sleep(time.Second)
  56. fmt.Printf("Resource Status %#v\n", sharedResource)
  57. }
Add Comment
Please, Sign In to add comment