zhangmeng
2019-05-22 c2bbe31e7c6c9f83f7bcce26dea98bc18ed8f39c
提交 | 用户 | 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 {
c2bbe3 24         s, _ := shmServer(m, url, args...)
Z 25         return s
9d4b12 26     }
Z 27     return nil
28 }
29
6887a3 30 // NewClient create dialer args presentive for parameter with protocal, e.g. sub topic
Z 31 func NewClient(m Mode, url string, args ...interface{}) Deliver {
9d4b12 32
Z 33     if m > ModeStart && m < ModeNNG {
6887a3 34         return nngClient(m, url, args...)
9a89af 35     } else if m == Shm {
c2bbe3 36         s, _ := shmClient(m, url, args...)
Z 37         return s
9d4b12 38     }
Z 39
40     return nil
41 }
c2bbe3 42
Z 43 // NewServerWithError create listener args presentive for parameter with protocal, e.g. sub topic
44 func NewServerWithError(m Mode, url string, args ...interface{}) (Deliver, error) {
45
46     if m > ModeStart && m < ModeNNG {
47         return nngServer(m, url, args...), nil
48     } else if m == Shm {
49         return shmServer(m, url, args...)
50     }
51     return nil, errors.New("please choose a suitable deliver.mode")
52 }
53
54 // NewClientWithError create dialer args presentive for parameter with protocal, e.g. sub topic
55 func NewClientWithError(m Mode, url string, args ...interface{}) (Deliver, error) {
56
57     if m > ModeStart && m < ModeNNG {
58         return nngClient(m, url, args...), nil
59     } else if m == Shm {
60         return shmClient(m, url, args...)
61     }
62
63     return nil, errors.New("please choose a suitable deliver.mode")
64 }