package deliver import "errors" // Deliver define a interface how to use mangos type Deliver interface { // Send send data Send([]byte) error // Recv recv data Recv() ([]byte, error) // Recv2 recv to param Recv2([]byte) error // Close close Deliver Close() } // 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 nngServer(m, url, args...) } else if m == Shm { s, err := shmServer(m, url, args...) if err != nil { s = nil } return s } return nil } // 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 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") }