Project Moscato Team Messaging Middleware Implemetation Message Middleware by Golang Operate as Secure, Effectively
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package modules
  2. import "errors"
  3. type MsgQueue struct {
  4. queue chan MsgUnit
  5. QueueFunc QueueOperate
  6. }
  7. type QueueOperate interface {
  8. //queue 초기화
  9. queue_init() error
  10. //queue push
  11. push(msg Message) bool
  12. //pop message (wait -> busy waiting 여부 결정)
  13. pop(wait bool) (Message, error)
  14. }
  15. func (mq *MsgQueue) queue_init() error {
  16. if mq.queue != nil && len(mq.queue) != 0 {
  17. return errors.New("Queue Hadlerer Error: Already initialized.")
  18. } else if mq.queue == nil {
  19. mq.queue = make(chan MsgUnit, 1000)
  20. return nil
  21. } else {
  22. close(mq.queue)
  23. mq.queue = make(chan MsgUnit)
  24. return nil
  25. }
  26. }
  27. func (mq *MsgQueue) push(msg MsgUnit) bool {
  28. mq.queue <- msg
  29. return true
  30. }
  31. func (mq *MsgQueue) pop(wait bool) MsgUnit {
  32. if wait == true {
  33. if len(mq.queue) == 0 {
  34. return nil
  35. } else {
  36. return <-mq.queue
  37. }
  38. } else {
  39. //queue에 데이터가 들어올 때까지 block
  40. return <-mq.queue
  41. }
  42. }