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