Procházet zdrojové kódy

default settings

secure
kimsungho před 4 roky
rodič
revize
191822ea04
4 změnil soubory, kde provedl 105 přidání a 0 odebrání
  1. 7
    0
      main.go
  2. 1
    0
      modules/init.go
  3. 49
    0
      modules/message.go
  4. 48
    0
      modules/queue.go

+ 7
- 0
main.go Zobrazit soubor

@@ -0,0 +1,7 @@
1
+package main
2
+
3
+import "fmt"
4
+
5
+func main() {
6
+	fmt.Printf("??")
7
+}

+ 1
- 0
modules/init.go Zobrazit soubor

@@ -0,0 +1 @@
1
+package modules

+ 49
- 0
modules/message.go Zobrazit soubor

@@ -0,0 +1,49 @@
1
+package modules
2
+
3
+//*****메세지 틀*****
4
+type Message struct {
5
+	From    string
6
+	Version string
7
+	Time    string
8
+	Type    string
9
+	Content MsgUnit
10
+}
11
+
12
+type MsgUnit interface {
13
+	// ConvertToJson - send 전 json형식으로 바꾸는 함수
14
+	ConvertToJson() ([]byte, error)
15
+	// Send - rpc를 이용하여 msg전송
16
+	Send() (Message, error)
17
+	// Recieve - rpc를 이용하여 msg전달 받음(rpc call)
18
+	Recieve() (Message, error)
19
+}
20
+
21
+//**********************
22
+
23
+//*****각 메세지 형식 및 정의**********
24
+
25
+//KeyGen 명령 메세지
26
+type KeyGenMsg struct {
27
+}
28
+
29
+//Key공유 메세지
30
+type KeyShareMsg struct {
31
+}
32
+
33
+//전달할 내용을 담은 메세지
34
+type PublishMsg struct {
35
+}
36
+
37
+//구독 정보를 담은 메세지
38
+type SubscriptionMsg struct {
39
+}
40
+
41
+//Microservice 등록 메세지
42
+type RegisterMsg struct {
43
+}
44
+
45
+//Microservice 탈퇴 메세지
46
+type WithdrawMsg struct {
47
+}
48
+
49
+//**************************

+ 48
- 0
modules/queue.go Zobrazit soubor

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

Načítá se…
Zrušit
Uložit