Project Moscato Team Messaging Middleware Implemetation Message Middleware by Golang Operate as Secure, Effectively
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

message.go 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package modules
  2. import "encoding/json"
  3. //import "strconv"
  4. //*****메세지 타입 상수화
  5. const (
  6. KGM = 1 + iota
  7. KSM
  8. PM
  9. SM
  10. RM
  11. WM
  12. )
  13. //*****메세지 틀*****
  14. type Message struct {
  15. from string //ip주소
  16. version string
  17. time string
  18. kind int //종류
  19. }
  20. type MsgUnit interface {
  21. // ConvertToJson - send 전 json형식으로 바꾸는 함수
  22. ConvertToJson() ([]byte, error)
  23. // CheckType - Message의 타입을 알려줌
  24. CheckType() int
  25. // SetType - Message 객체가 생성 되었을때 종류 정하기
  26. //SetType(int)
  27. }
  28. //*****각 메세지 형식 및 정의**********
  29. //KeyGen 명령 메세지
  30. type KeyGenMsg struct {
  31. Message
  32. iptable []string
  33. }
  34. //Key공유 메세지
  35. type KeyShareMsg struct {
  36. Message
  37. base32 string
  38. }
  39. //전달할 내용을 담은 메세지
  40. type PublishMsg struct {
  41. Message
  42. subscription []int64 //선호도
  43. content []int64 // 내용
  44. }
  45. //구독 정보를 담은 메세지
  46. type SubscriptionMsg struct {
  47. Message
  48. subscription []int64 //선호도
  49. }
  50. //Microservice 등록 메세지
  51. type RegisterMsg struct {
  52. Message
  53. }
  54. //Microservice 탈퇴 메세지
  55. type WithdrawMsg struct {
  56. Message
  57. }
  58. //**************************
  59. func (msg *KeyGenMsg) ConvertToJson() ([]byte, error) {
  60. js := msg
  61. jsonBytes, err := json.Marshal(js)
  62. return jsonBytes, err
  63. }
  64. func (msg *KeyShareMsg) ConvertToJson() ([]byte, error) {
  65. js := msg
  66. jsonBytes, err := json.Marshal(js)
  67. return jsonBytes, err
  68. }
  69. func (msg *PublishMsg) ConvertToJson() ([]byte, error) {
  70. js := msg
  71. jsonBytes, err := json.Marshal(js)
  72. return jsonBytes, err
  73. }
  74. func (msg *SubscriptionMsg) ConvertToJson() ([]byte, error) {
  75. js := msg
  76. jsonBytes, err := json.Marshal(js)
  77. return jsonBytes, err
  78. }
  79. func (msg *RegisterMsg) ConvertToJson() ([]byte, error) {
  80. js := msg
  81. jsonBytes, err := json.Marshal(js)
  82. return jsonBytes, err
  83. }
  84. func (msg *WithdrawMsg) ConvertToJson() ([]byte, error) {
  85. js := msg
  86. jsonBytes, err := json.Marshal(js)
  87. return jsonBytes, err
  88. }
  89. func (msg Message) CheckType() int {
  90. return msg.kind
  91. }
  92. /*
  93. func (msg Message)SetType(t int){
  94. msg.kind=t
  95. }
  96. func NewMessage() *Message{
  97. //m:=&Message{
  98. //from: ip
  99. //version: version
  100. //time : time
  101. //kind : kind(종류)
  102. //}
  103. }
  104. */
  105. //*********************************
  106. // Send - rpc를 이용하여 msg전송
  107. //func (msg *MsgUnit) Send(ipaddr string, message MsgUnit) (error){}
  108. // Recieve - rpc를 이용하여 msg전달 받음(rpc call)
  109. //func Recieve(msg *MsgUnit) (MsgUnit, error){ }
  110. //*********************************