zhangmeng
2019-05-27 50e51f5e0e1764ea02777f9ead6be89c08a6e982
提交 | 用户 | 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 {
53         return nngServer(m, url, args...), nil
54     } else if m == Shm {
55         return shmServer(m, url, args...)
56     }
57     return nil, errors.New("please choose a suitable deliver.mode")
58 }
59
60 // NewClientWithError create dialer args presentive for parameter with protocal, e.g. sub topic
61 func NewClientWithError(m Mode, url string, args ...interface{}) (Deliver, error) {
62
63     if m > ModeStart && m < ModeNNG {
64         return nngClient(m, url, args...), nil
65     } else if m == Shm {
66         return shmClient(m, url, args...)
67     }
68
69     return nil, errors.New("please choose a suitable deliver.mode")
70 }