zhangmeng
2019-05-27 2cb8afafa624fe7c18747f068c8b1b5ec47011e1
提交 | 用户 | age
9d4b12 1 package deliver
Z 2
c2bbe3 3 import "errors"
Z 4
9d4b12 5 // Deliver define a interface how to use mangos
Z 6 type Deliver interface {
7
8     // Send send data
9     Send([]byte) error
10
11     // Recv recv data
12     Recv() ([]byte, error)
aaae99 13
Z 14     // Close close Deliver
15     Close()
9d4b12 16 }
Z 17
6887a3 18 // NewServer create listener args presentive for parameter with protocal, e.g. sub topic
Z 19 func NewServer(m Mode, url string, args ...interface{}) Deliver {
9d4b12 20
Z 21     if m > ModeStart && m < ModeNNG {
6887a3 22         return nngServer(m, url, args...)
9a89af 23     } else if m == Shm {
50e51f 24         s, err := shmServer(m, url, args...)
Z 25         if err != nil {
26             s = nil
27         }
c2bbe3 28         return s
9d4b12 29     }
Z 30     return nil
31 }
32
6887a3 33 // NewClient create dialer args presentive for parameter with protocal, e.g. sub topic
Z 34 func NewClient(m Mode, url string, args ...interface{}) Deliver {
9d4b12 35
Z 36     if m > ModeStart && m < ModeNNG {
6887a3 37         return nngClient(m, url, args...)
9a89af 38     } else if m == Shm {
50e51f 39         s, err := shmClient(m, url, args...)
Z 40         if err != nil {
41             s = nil
42         }
c2bbe3 43         return s
9d4b12 44     }
Z 45
46     return nil
47 }
c2bbe3 48
Z 49 // NewServerWithError create listener args presentive for parameter with protocal, e.g. sub topic
50 func NewServerWithError(m Mode, url string, args ...interface{}) (Deliver, error) {
51
52     if m > ModeStart && m < ModeNNG {
2cb8af 53         s := nngServer(m, url, args...)
Z 54         if s == nil {
55             return nil, errors.New("nng create server error")
56         }
57         return s, nil
c2bbe3 58     } else if m == Shm {
Z 59         return shmServer(m, url, args...)
60     }
61     return nil, errors.New("please choose a suitable deliver.mode")
62 }
63
64 // NewClientWithError create dialer args presentive for parameter with protocal, e.g. sub topic
65 func NewClientWithError(m Mode, url string, args ...interface{}) (Deliver, error) {
66
67     if m > ModeStart && m < ModeNNG {
2cb8af 68         s := nngClient(m, url, args...)
Z 69         if s == nil {
70             return nil, errors.New("nng create client error")
71         }
72         return s, nil
c2bbe3 73     } else if m == Shm {
Z 74         return shmClient(m, url, args...)
75     }
76
77     return nil, errors.New("please choose a suitable deliver.mode")
78 }