| | |
| | | package deliver |
| | | |
| | | import "errors" |
| | | |
| | | // Deliver define a interface how to use mangos |
| | | type Deliver interface { |
| | | |
| | |
| | | // Recv recv data |
| | | Recv() ([]byte, error) |
| | | |
| | | // Recv2 recv to param |
| | | Recv2([]byte) error |
| | | |
| | | // Close close Deliver |
| | | Close() |
| | | } |
| | | |
| | | // NewPush create listener args presentive for parameter with protocal, e.g. sub topic |
| | | func NewPush(m Mode, url string, args ...interface{}) Deliver { |
| | | // NewServer create listener args presentive for parameter with protocal, e.g. sub topic |
| | | func NewServer(m Mode, url string, args ...interface{}) Deliver { |
| | | |
| | | if m > ModeStart && m < ModeNNG { |
| | | return nngPush(m, url, args...) |
| | | return nngServer(m, url, args...) |
| | | } else if m == Shm { |
| | | s, err := shmServer(m, url, args...) |
| | | if err != nil { |
| | | s = nil |
| | | } |
| | | return s |
| | | } |
| | | return nil |
| | | } |
| | | |
| | | // NewPull create dialer args presentive for parameter with protocal, e.g. sub topic |
| | | func NewPull(m Mode, url string, args ...interface{}) Deliver { |
| | | // NewClient create dialer args presentive for parameter with protocal, e.g. sub topic |
| | | func NewClient(m Mode, url string, args ...interface{}) Deliver { |
| | | |
| | | if m > ModeStart && m < ModeNNG { |
| | | return nngPull(m, url, args...) |
| | | return nngClient(m, url, args...) |
| | | } else if m == Shm { |
| | | s, err := shmClient(m, url, args...) |
| | | if err != nil { |
| | | s = nil |
| | | } |
| | | return s |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | // NewServerWithError create listener args presentive for parameter with protocal, e.g. sub topic |
| | | func NewServerWithError(m Mode, url string, args ...interface{}) (Deliver, error) { |
| | | |
| | | if m > ModeStart && m < ModeNNG { |
| | | s := nngServer(m, url, args...) |
| | | if s == nil { |
| | | return nil, errors.New("nng create server error") |
| | | } |
| | | return s, nil |
| | | } else if m == Shm { |
| | | return shmServer(m, url, args...) |
| | | } |
| | | return nil, errors.New("please choose a suitable deliver.mode") |
| | | } |
| | | |
| | | // NewClientWithError create dialer args presentive for parameter with protocal, e.g. sub topic |
| | | func NewClientWithError(m Mode, url string, args ...interface{}) (Deliver, error) { |
| | | |
| | | if m > ModeStart && m < ModeNNG { |
| | | s := nngClient(m, url, args...) |
| | | if s == nil { |
| | | return nil, errors.New("nng create client error") |
| | | } |
| | | return s, nil |
| | | } else if m == Shm { |
| | | return shmClient(m, url, args...) |
| | | } |
| | | |
| | | return nil, errors.New("please choose a suitable deliver.mode") |
| | | } |
| | | |
| | | // NewServerWithTimeout with timeout |
| | | func NewServerWithTimeout(m Mode, url string, tm int, args ...interface{}) (Deliver, error) { |
| | | if m > ModeStart && m < ModeNNG { |
| | | setTimeOut(tm) |
| | | s := nngServer(m, url, args...) |
| | | if s == nil { |
| | | return nil, errors.New("nng create server error") |
| | | } |
| | | return s, nil |
| | | } else if m == Shm { |
| | | return shmServer(m, url, args...) |
| | | } |
| | | return nil, errors.New("please choose a suitable deliver.mode") |
| | | } |
| | | |
| | | // NewClientWithTimeout with timeout, tm unit millisecond |
| | | func NewClientWithTimeout(m Mode, url string, tm int, args ...interface{}) (Deliver, error) { |
| | | if m > ModeStart && m < ModeNNG { |
| | | setTimeOut(tm) |
| | | |
| | | s := nngClient(m, url, args...) |
| | | if s == nil { |
| | | return nil, errors.New("nng create client error") |
| | | } |
| | | return s, nil |
| | | } else if m == Shm { |
| | | return shmClient(m, url, args...) |
| | | } |
| | | |
| | | return nil, errors.New("please choose a suitable deliver.mode") |
| | | } |