| 提交 | 用户 | 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 | } | |