Explorar el Código

Revise message.go/queue.go

Write manage.go
secure
kimsungho hace 4 años
padre
commit
6268bb73a0
Se han modificado 3 ficheros con 128 adiciones y 11 borrados
  1. 37
    1
      modules/manage.go
  2. 90
    9
      modules/message.go
  3. 1
    1
      modules/queue.go

+ 37
- 1
modules/manage.go Ver fichero

15
 
15
 
16
 //모든 Microservice정보 저장
16
 //모든 Microservice정보 저장
17
 type MStable struct {
17
 type MStable struct {
18
-	IpTable map[string]MSnode
18
+	NodeTable map[string]MSnode
19
+}
20
+
21
+func (manager *MStable) getIpaddr(nodename string) (string, bool) {
22
+	//해당 이름의 노드이름이 존재하는지 확인
23
+	node, exists := manager.NodeTable[nodename]
24
+
25
+	//존재하지 않는 경우 nil리턴
26
+	if !exists {
27
+		return "", false
28
+	} else {
29
+		return node.ipAddr, true
30
+	}
31
+}
32
+
33
+func (manager *MStable) add_microservice(node MSnode) bool {
34
+	//삽입 전 존재여부 확인
35
+	_, exists := manager.NodeTable[node.Getname()]
36
+
37
+	if exists {
38
+		return false
39
+	} else {
40
+		manager.NodeTable[node.Getname()] = node
41
+		return true
42
+	}
43
+}
44
+
45
+func (manager *MStable) remove_microservice(nodename string) bool {
46
+	//삭제 전 존재여부 확인
47
+	_, exists := manager.NodeTable[nodename]
48
+
49
+	if exists {
50
+		delete(manager.NodeTable, nodename)
51
+		return true
52
+	} else {
53
+		return false
54
+	}
19
 }
55
 }

+ 90
- 9
modules/message.go Ver fichero

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

+ 1
- 1
modules/queue.go Ver fichero

20
 	if mq.queue != nil && len(mq.queue) != 0 {
20
 	if mq.queue != nil && len(mq.queue) != 0 {
21
 		return errors.New("Queue Hadlerer Error: Already initialized.")
21
 		return errors.New("Queue Hadlerer Error: Already initialized.")
22
 	} else if mq.queue == nil {
22
 	} else if mq.queue == nil {
23
-		mq.queue = make(chan Message)
23
+		mq.queue = make(chan Message, 1000)
24
 		return nil
24
 		return nil
25
 	} else {
25
 	} else {
26
 		close(mq.queue)
26
 		close(mq.queue)

Loading…
Cancelar
Guardar