提交 | 用户 | age
|
d23f54
|
1 |
package deliver |
Z |
2 |
|
|
3 |
import ( |
|
4 |
"time" |
|
5 |
|
|
6 |
"nanomsg.org/go-mangos" |
|
7 |
) |
|
8 |
|
|
9 |
// maxRecvSize max recv size |
|
10 |
var ( |
|
11 |
maxRecvSize = 33 * 1024 * 1024 |
3e6484
|
12 |
surveyorTime = 0 |
dd22fd
|
13 |
timeout = time.Duration(25) |
d23f54
|
14 |
) |
Z |
15 |
|
dd22fd
|
16 |
func setTimeOut(tm int) { |
Z |
17 |
timeout = time.Duration(tm) |
|
18 |
} |
|
19 |
|
d23f54
|
20 |
func optDefault() map[string]interface{} { |
6049d7
|
21 |
|
d23f54
|
22 |
options := make(map[string]interface{}) |
Z |
23 |
|
|
24 |
options[mangos.OptionMaxRecvSize] = maxRecvSize |
|
25 |
options[mangos.OptionWriteQLen] = 0 |
|
26 |
options[mangos.OptionReadQLen] = 0 |
6049d7
|
27 |
options[mangos.OptionRecvDeadline] = timeout * time.Millisecond |
Z |
28 |
options[mangos.OptionSendDeadline] = timeout * time.Millisecond |
d23f54
|
29 |
// options[mangos.OptionRaw] = true |
Z |
30 |
|
|
31 |
return options |
|
32 |
} |
|
33 |
|
|
34 |
func optRaw(options map[string]interface{}) map[string]interface{} { |
|
35 |
|
|
36 |
options[mangos.OptionRaw] = true |
|
37 |
return options |
|
38 |
} |
|
39 |
|
|
40 |
func optOther(p protocol, options map[string]interface{}, o ...interface{}) map[string]interface{} { |
|
41 |
// len 1 or 0, sub topic |
|
42 |
if p == SUB { |
|
43 |
if len(o) == 1 { |
|
44 |
v := o[0] |
|
45 |
if t, ok := v.(string); ok { |
|
46 |
options[mangos.OptionSubscribe] = []byte(t) |
|
47 |
} |
|
48 |
} else { |
|
49 |
options[mangos.OptionSubscribe] = []byte("") |
|
50 |
} |
|
51 |
} |
|
52 |
|
|
53 |
// len 1 or 0, surveyor time |
|
54 |
if p == SURVEYOR { |
|
55 |
if len(o) == 1 { |
|
56 |
v := o[0] |
|
57 |
if t, ok := v.(int); ok { |
|
58 |
surveyorTime = t / 2 |
|
59 |
if surveyorTime == 0 { |
|
60 |
surveyorTime = 1 |
|
61 |
} |
|
62 |
} |
|
63 |
} |
|
64 |
options[mangos.OptionSurveyTime] = time.Duration(surveyorTime) * time.Second |
|
65 |
} |
|
66 |
return options |
|
67 |
} |
|
68 |
|
|
69 |
func setSocketOptions(sock mangos.Socket, options map[string]interface{}) error { |
|
70 |
|
|
71 |
for k, v := range options { |
|
72 |
if err := sock.SetOption(k, v); err != nil { |
|
73 |
return err |
|
74 |
} |
|
75 |
} |
|
76 |
return nil |
|
77 |
} |