| | |
| | | "nanomsg.org/go-mangos/transport/all" |
| | | ) |
| | | |
| | | // type deliver |
| | | type td int |
| | | |
| | | const ( |
| | | producer = td(iota) |
| | | consumer |
| | | star //mangos bus protocol |
| | | ) |
| | | |
| | | // NNG mangos wrap |
| | | type NNG struct { |
| | | sock mangos.Socket |
| | |
| | | func (n *NNG) Send(data []byte) error { |
| | | var err error |
| | | if n.sock == nil { |
| | | n.sock, err = n.makeNNG(true) |
| | | n.sock, err = n.makeNNG(producer) |
| | | if err != nil { |
| | | fmt.Println("create nng producer error") |
| | | return err |
| | |
| | | var err error |
| | | |
| | | if n.sock == nil { |
| | | n.sock, err = n.makeNNG(false) |
| | | n.sock, err = n.makeNNG(consumer) |
| | | if err != nil { |
| | | fmt.Println("create nng consumer error") |
| | | return nil, err |
| | |
| | | |
| | | } |
| | | |
| | | func proto(producer bool, m Mode) protocol { |
| | | if producer { |
| | | func proto(typ td, m Mode) protocol { |
| | | if typ == producer { |
| | | return protoProducer(m) |
| | | } else if typ == consumer { |
| | | return protoConsumer(m) |
| | | } |
| | | return protoConsumer(m) |
| | | } |
| | | |
| | | func (n *NNG) makeNNG(producer bool) (mangos.Socket, error) { |
| | | func (n *NNG) makeNNG(typ td) (mangos.Socket, error) { |
| | | |
| | | var sock mangos.Socket |
| | | var err error |
| | | if sock, err = newSocket(proto(producer, n.mode)); err != nil { |
| | | if sock, err = newSocket(proto(typ, n.mode)); err != nil { |
| | | return nil, err |
| | | } |
| | | |