zhangmeng
2019-09-27 2d390df9ede39c9d7c34bd8190b9329cfc371325
提交 | 用户 | 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 }