| 提交 | 用户 | age | ||
| d23f54 | 1 | package deliver |
| Z | 2 | |
| 3 | import "nanomsg.org/go-mangos" | |
| 4 | ||
| 5 | func commonMake(n *NNG, p protocol, opts map[string]interface{}) (mangos.Socket, error) { | |
| 6 | var sock mangos.Socket | |
| 7 | var err error | |
| 8 | ||
| 9 | if sock, err = newSocket(p); err != nil { | |
| 10 | return nil, err | |
| 11 | } | |
| 12 | ||
| 13 | if err = setSocketOptions(sock, opts); err != nil { | |
| 14 | sock.Close() | |
| 15 | sock = nil | |
| 16 | } | |
| 9a89af | 17 | if n.typ == agent { |
| d23f54 | 18 | if err = sock.Listen(n.url); err != nil { |
| Z | 19 | sock.Close() |
| 20 | sock = nil | |
| 21 | } | |
| 22 | } else { | |
| 23 | if err = sock.Dial(n.url); err != nil { | |
| 24 | sock.Close() | |
| 25 | sock = nil | |
| 26 | } | |
| 27 | } | |
| 28 | return sock, err | |
| 29 | } | |
| 30 | ||
| 31 | func (n *NNG) ppMakeNNG(typ td) (mangos.Socket, error) { | |
| 32 | ||
| 33 | p := proto(typ, n.mode) | |
| 34 | opts := optOther(p, optRaw(optDefault()), n.arguments...) | |
| 35 | ||
| 36 | return commonMake(n, p, opts) | |
| 37 | } | |
| 38 | ||
| 39 | func (n *NNG) rrMakeNNG(typ td) (mangos.Socket, error) { | |
| 40 | ||
| 41 | p := proto(typ, n.mode) | |
| 42 | opts := optDefault() | |
| 43 | ||
| 44 | return commonMake(n, p, opts) | |
| 45 | } | |
| 46 | ||
| 47 | func (n *NNG) busMakeNNG(typ td) (mangos.Socket, error) { | |
| 48 | var sock mangos.Socket | |
| 49 | var err error | |
| 50 | if sock, err = newSocket(BUS); err != nil { | |
| 51 | return nil, err | |
| 52 | } | |
| 53 | if err = sock.Listen(n.url); err != nil { | |
| 54 | sock.Close() | |
| 55 | sock = nil | |
| 56 | } | |
| 57 | // arguments are bus clients | |
| 58 | for _, arg := range n.arguments { | |
| 59 | switch arg.(type) { | |
| 60 | case string: | |
| 61 | url := arg.(string) | |
| 62 | if err = sock.Dial(url); err != nil { | |
| 63 | sock.Close() | |
| 64 | sock = nil | |
| 65 | break | |
| 66 | } | |
| 67 | default: | |
| 68 | } | |
| 69 | } | |
| 70 | if err = setSocketOptions(sock, nil); err != nil { | |
| 71 | return nil, err | |
| 72 | } | |
| 73 | return sock, err | |
| 74 | } | |