|
|
@@ -4,7 +4,6 @@ import (
|
|
4
|
4
|
"encoding/json"
|
|
5
|
5
|
"errors"
|
|
6
|
6
|
"fmt"
|
|
7
|
|
- "github.com/facebookgo/inject"
|
|
8
|
7
|
"github.com/fatih/color"
|
|
9
|
8
|
"log"
|
|
10
|
9
|
"net"
|
|
|
@@ -30,7 +29,7 @@ type secure_manager struct{}
|
|
30
|
29
|
type Moscato struct {
|
|
31
|
30
|
queue MsgQueue
|
|
32
|
31
|
MicroServiceManager NodeManager `inject:""`
|
|
33
|
|
- match_mng match_manager
|
|
|
32
|
+ MatchingManager match_manager
|
|
34
|
33
|
SecureManager SecurityManager `inject:""`
|
|
35
|
34
|
}
|
|
36
|
35
|
|
|
|
@@ -63,7 +62,7 @@ func (receiver Receiver) MmReceive(args Args, reply *Reply) error {
|
|
63
|
62
|
|
|
64
|
63
|
}
|
|
65
|
64
|
}()
|
|
66
|
|
- reply.CompleteLog = "received completely"
|
|
|
65
|
+ reply.CompleteLog = "received"
|
|
67
|
66
|
case PM:
|
|
68
|
67
|
var msg PublishMsg
|
|
69
|
68
|
err := json.Unmarshal(args.JsonMsg, &msg)
|
|
|
@@ -77,7 +76,7 @@ func (receiver Receiver) MmReceive(args Args, reply *Reply) error {
|
|
77
|
76
|
|
|
78
|
77
|
}
|
|
79
|
78
|
}()
|
|
80
|
|
- reply.CompleteLog = "PM received completely"
|
|
|
79
|
+ reply.CompleteLog = "PM received"
|
|
81
|
80
|
case SM:
|
|
82
|
81
|
var msg SubscriptionMsg
|
|
83
|
82
|
err := json.Unmarshal(args.JsonMsg, &msg)
|
|
|
@@ -90,7 +89,7 @@ func (receiver Receiver) MmReceive(args Args, reply *Reply) error {
|
|
90
|
89
|
|
|
91
|
90
|
}
|
|
92
|
91
|
}()
|
|
93
|
|
- reply.CompleteLog = "received completely"
|
|
|
92
|
+ reply.CompleteLog = "received"
|
|
94
|
93
|
case RM:
|
|
95
|
94
|
var msg RegisterMsg
|
|
96
|
95
|
err := json.Unmarshal(args.JsonMsg, &msg)
|
|
|
@@ -103,7 +102,7 @@ func (receiver Receiver) MmReceive(args Args, reply *Reply) error {
|
|
103
|
102
|
fmt.Println(err)
|
|
104
|
103
|
}
|
|
105
|
104
|
}()
|
|
106
|
|
- reply.CompleteLog = "RM received completely"
|
|
|
105
|
+ reply.CompleteLog = "RM received"
|
|
107
|
106
|
case WM:
|
|
108
|
107
|
var msg WithdrawMsg
|
|
109
|
108
|
err := json.Unmarshal(args.JsonMsg, &msg)
|
|
|
@@ -116,7 +115,7 @@ func (receiver Receiver) MmReceive(args Args, reply *Reply) error {
|
|
116
|
115
|
|
|
117
|
116
|
}
|
|
118
|
117
|
}()
|
|
119
|
|
- reply.CompleteLog = "received completely"
|
|
|
118
|
+ reply.CompleteLog = "received"
|
|
120
|
119
|
default:
|
|
121
|
120
|
return errors.New("message type Error: Not registered message type")
|
|
122
|
121
|
}
|
|
|
@@ -141,13 +140,14 @@ func (moscato *Moscato) Receive(msg MsgUnit) (MsgUnit, error) {
|
|
141
|
140
|
case KSM: //Key share msg
|
|
142
|
141
|
|
|
143
|
142
|
case PM: //Publish msg
|
|
144
|
|
- moscato.queue.push(msg.(PublishMsg))
|
|
145
|
143
|
log.Println("PM received")
|
|
|
144
|
+ moscato.queue.push(msg.(PublishMsg))
|
|
146
|
145
|
|
|
147
|
146
|
case SM: //Subscription msg
|
|
148
|
|
- moscato.match_mng.add_subscription(msg.(*SubscriptionMsg))
|
|
|
147
|
+ moscato.MatchingManager.add_subscription(msg.(*SubscriptionMsg))
|
|
149
|
148
|
|
|
150
|
149
|
case RM: //Register msg
|
|
|
150
|
+ log.Println("RM received")
|
|
151
|
151
|
var newMsg RegisterMsg
|
|
152
|
152
|
newMsg = msg.(RegisterMsg)
|
|
153
|
153
|
|
|
|
@@ -162,14 +162,12 @@ func (moscato *Moscato) Receive(msg MsgUnit) (MsgUnit, error) {
|
|
162
|
162
|
|
|
163
|
163
|
addr, _ := moscato.MicroServiceManager.GetIpaddr(newMsg.From)
|
|
164
|
164
|
moscato.SecureManager.RegKey(newMsg)
|
|
165
|
|
- fmt.Println(moscato.SecureManager.GetNodeKey(newMsg.From))
|
|
166
|
|
- fmt.Println(addr)
|
|
|
165
|
+ fmt.Println("Registered microservice: address", addr,
|
|
|
166
|
+ "/ key", moscato.SecureManager.GetNodeKey(newMsg.From))
|
|
167
|
167
|
|
|
168
|
168
|
// ackRM 메세지 전송
|
|
169
|
169
|
go moscato.Send2MS(addr, newMsg)
|
|
170
|
170
|
|
|
171
|
|
- log.Println("RM received")
|
|
172
|
|
-
|
|
173
|
171
|
case WM: //Withdraw msg
|
|
174
|
172
|
moscato.MicroServiceManager.RemoveMicroservice(msg.(*WithdrawMsg).From)
|
|
175
|
173
|
|
|
|
@@ -202,40 +200,24 @@ func (moscato *Moscato) Send2MS(ipaddress string, msg MsgUnit) {
|
|
202
|
200
|
}
|
|
203
|
201
|
//log.Println(reply.CompleteLog) //잘 받았는지 확인 해줌
|
|
204
|
202
|
// 마이크로 서비스에게 받은 메시지는 노란색으로 출력
|
|
205
|
|
- color.Yellow(reply.CompleteLog)
|
|
|
203
|
+ log.Println(reply.CompleteLog)
|
|
206
|
204
|
}
|
|
207
|
205
|
|
|
208
|
206
|
func (moscato *Moscato) Run() {
|
|
209
|
207
|
|
|
210
|
|
- var graph inject.Graph
|
|
211
|
|
-
|
|
212
|
|
- err := graph.Provide(
|
|
213
|
|
- &inject.Object{Value: NewMStable()},
|
|
214
|
|
- &inject.Object{Value: moscato},
|
|
215
|
|
- &inject.Object{Value: NewSecurity()})
|
|
216
|
|
- if err != nil {
|
|
217
|
|
- fmt.Println(err)
|
|
218
|
|
- return
|
|
219
|
|
- }
|
|
220
|
|
-
|
|
221
|
|
- err = graph.Populate()
|
|
222
|
|
- if err != nil {
|
|
223
|
|
- fmt.Println(err)
|
|
224
|
|
- return
|
|
225
|
|
- }
|
|
|
208
|
+ config := AppConfig{moscato}
|
|
|
209
|
+ config.config()
|
|
226
|
210
|
|
|
227
|
211
|
//모스카토 구조체 변수 초기화
|
|
228
|
212
|
receiver := Receiver{moscato: moscato}
|
|
229
|
|
- err = moscato.queue.queue_init()
|
|
|
213
|
+ err := moscato.queue.queue_init()
|
|
230
|
214
|
if err != nil {
|
|
231
|
215
|
fmt.Println(err)
|
|
232
|
216
|
return
|
|
233
|
217
|
}
|
|
234
|
218
|
|
|
235
|
|
- //moscato.MicroServiceManager = NewMStable()
|
|
236
|
|
-
|
|
237
|
219
|
//go routine -> matching 동작
|
|
238
|
|
- go moscato.match_mng.matching(&moscato.queue)
|
|
|
220
|
+ go moscato.MatchingManager.matching(&moscato.queue)
|
|
239
|
221
|
go moscato.CheckQueue()
|
|
240
|
222
|
|
|
241
|
223
|
//rpc 등록 -> Receive 함수
|
|
|
@@ -245,8 +227,8 @@ func (moscato *Moscato) Run() {
|
|
245
|
227
|
return
|
|
246
|
228
|
}
|
|
247
|
229
|
|
|
248
|
|
- Listen()
|
|
249
|
|
- log.Println("listen complete.")
|
|
|
230
|
+ go Listen()
|
|
|
231
|
+ color.Blue("initializing complete.")
|
|
250
|
232
|
fmt.Scanln()
|
|
251
|
233
|
}
|
|
252
|
234
|
|
|
|
@@ -257,9 +239,9 @@ func Listen() {
|
|
257
|
239
|
if err1 != nil {
|
|
258
|
240
|
log.Fatal(fmt.Sprintf("Unable to listen on given port: %s", err1))
|
|
259
|
241
|
}
|
|
260
|
|
- /*defer l1.Close()
|
|
|
242
|
+ defer l.Close()
|
|
261
|
243
|
|
|
262
|
|
- if err2 != nil {
|
|
|
244
|
+ /*if err2 != nil {
|
|
263
|
245
|
log.Fatal(fmt.Sprintf("Unable to listen on given port: %s", err2))
|
|
264
|
246
|
}
|
|
265
|
247
|
defer l2.Close()*/
|