zhangmeng
2019-09-27 2d390df9ede39c9d7c34bd8190b9329cfc371325
提交 | 用户 | 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
020e17 14     // Recv2 recv to param
058b21 15     Recv2([]byte) (int, error)
020e17 16
aaae99 17     // Close close Deliver
Z 18     Close()
9d4b12 19 }
Z 20
6887a3 21 // NewServer create listener args presentive for parameter with protocal, e.g. sub topic
Z 22 func NewServer(m Mode, url string, args ...interface{}) Deliver {
9d4b12 23
Z 24     if m > ModeStart && m < ModeNNG {
6887a3 25         return nngServer(m, url, args...)
9a89af 26     } else if m == Shm {
50e51f 27         s, err := shmServer(m, url, args...)
Z 28         if err != nil {
29             s = nil
30         }
c2bbe3 31         return s
9d4b12 32     }
Z 33     return nil
34 }
35
6887a3 36 // NewClient create dialer args presentive for parameter with protocal, e.g. sub topic
Z 37 func NewClient(m Mode, url string, args ...interface{}) Deliver {
9d4b12 38
Z 39     if m > ModeStart && m < ModeNNG {
6887a3 40         return nngClient(m, url, args...)
9a89af 41     } else if m == Shm {
50e51f 42         s, err := shmClient(m, url, args...)
Z 43         if err != nil {
44             s = nil
45         }
c2bbe3 46         return s
9d4b12 47     }
Z 48
49     return nil
50 }
c2bbe3 51
Z 52 // NewServerWithError create listener args presentive for parameter with protocal, e.g. sub topic
53 func NewServerWithError(m Mode, url string, args ...interface{}) (Deliver, error) {
54
55     if m > ModeStart && m < ModeNNG {
2cb8af 56         s := nngServer(m, url, args...)
Z 57         if s == nil {
58             return nil, errors.New("nng create server error")
59         }
60         return s, nil
c2bbe3 61     } else if m == Shm {
Z 62         return shmServer(m, url, args...)
63     }
64     return nil, errors.New("please choose a suitable deliver.mode")
65 }
66
67 // NewClientWithError create dialer args presentive for parameter with protocal, e.g. sub topic
68 func NewClientWithError(m Mode, url string, args ...interface{}) (Deliver, error) {
69
70     if m > ModeStart && m < ModeNNG {
2cb8af 71         s := nngClient(m, url, args...)
Z 72         if s == nil {
73             return nil, errors.New("nng create client error")
74         }
75         return s, nil
c2bbe3 76     } else if m == Shm {
Z 77         return shmClient(m, url, args...)
78     }
79
80     return nil, errors.New("please choose a suitable deliver.mode")
81 }
dd22fd 82
Z 83 // NewServerWithTimeout with timeout
84 func NewServerWithTimeout(m Mode, url string, tm int, args ...interface{}) (Deliver, error) {
85     if m > ModeStart && m < ModeNNG {
86         setTimeOut(tm)
87         s := nngServer(m, url, args...)
88         if s == nil {
89             return nil, errors.New("nng create server error")
90         }
91         return s, nil
92     } else if m == Shm {
93         return shmServer(m, url, args...)
94     }
95     return nil, errors.New("please choose a suitable deliver.mode")
96 }
97
98 // NewClientWithTimeout with timeout, tm unit millisecond
99 func NewClientWithTimeout(m Mode, url string, tm int, args ...interface{}) (Deliver, error) {
100     if m > ModeStart && m < ModeNNG {
101         setTimeOut(tm)
102
103         s := nngClient(m, url, args...)
104         if s == nil {
105             return nil, errors.New("nng create client error")
106         }
107         return s, nil
108     } else if m == Shm {
109         return shmClient(m, url, args...)
110     }
111
112     return nil, errors.New("please choose a suitable deliver.mode")
113 }