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)
|
|
// 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")
|
}
|