Преглед изворни кода

Revise message.go/queue.go

Write manage.go
secure
kimsungho пре 4 година
родитељ
комит
6268bb73a0
3 измењених фајлова са 128 додато и 11 уклоњено
  1. 37
    1
      modules/manage.go
  2. 90
    9
      modules/message.go
  3. 1
    1
      modules/queue.go

+ 37
- 1
modules/manage.go Прегледај датотеку

@@ -15,5 +15,41 @@ func (node *MSnode) Getipaddr() string {
15 15
 
16 16
 //모든 Microservice정보 저장
17 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 Прегледај датотеку

@@ -1,45 +1,61 @@
1 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 18
 type Message struct {
5
-	from    string
19
+	from    string //ip주소
6 20
 	version string
7 21
 	time    string
8
-	kine    string
9
-	content MsgUnit
22
+	kind    int //종류
10 23
 }
11 24
 
12 25
 type MsgUnit interface {
13 26
 	// ConvertToJson - send 전 json형식으로 바꾸는 함수
14 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 36
 //KeyGen 명령 메세지
26 37
 type KeyGenMsg struct {
27 38
 	Message
39
+	iptable []string
28 40
 }
29 41
 
30 42
 //Key공유 메세지
31 43
 type KeyShareMsg struct {
32 44
 	Message
45
+	base32 string
33 46
 }
34 47
 
35 48
 //전달할 내용을 담은 메세지
36 49
 type PublishMsg struct {
37 50
 	Message
51
+	subscription []int64 //선호도
52
+	content      []int64 // 내용
38 53
 }
39 54
 
40 55
 //구독 정보를 담은 메세지
41 56
 type SubscriptionMsg struct {
42 57
 	Message
58
+	subscription []int64 //선호도
43 59
 }
44 60
 
45 61
 //Microservice 등록 메세지
@@ -53,3 +69,68 @@ type WithdrawMsg struct {
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 Прегледај датотеку

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

Loading…
Откажи
Сачувај