zhangmeng
2019-07-10 6049d76f48920b4de3f0b4e6921318c5c7d4f62c
提交 | 用户 | 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
d23f54 13 )
Z 14
15 func optDefault() map[string]interface{} {
6049d7 16     timeout := time.Duration(25)
Z 17
d23f54 18     options := make(map[string]interface{})
Z 19
20     options[mangos.OptionMaxRecvSize] = maxRecvSize
21     options[mangos.OptionWriteQLen] = 0
22     options[mangos.OptionReadQLen] = 0
6049d7 23     options[mangos.OptionRecvDeadline] = timeout * time.Millisecond
Z 24     options[mangos.OptionSendDeadline] = timeout * time.Millisecond
d23f54 25     // options[mangos.OptionRaw] = true
Z 26
27     return options
28 }
29
30 func optRaw(options map[string]interface{}) map[string]interface{} {
31
32     options[mangos.OptionRaw] = true
33     return options
34 }
35
36 func optOther(p protocol, options map[string]interface{}, o ...interface{}) map[string]interface{} {
37     // len 1 or 0, sub topic
38     if p == SUB {
39         if len(o) == 1 {
40             v := o[0]
41             if t, ok := v.(string); ok {
42                 options[mangos.OptionSubscribe] = []byte(t)
43             }
44         } else {
45             options[mangos.OptionSubscribe] = []byte("")
46         }
47     }
48
49     // len 1 or 0, surveyor time
50     if p == SURVEYOR {
51         if len(o) == 1 {
52             v := o[0]
53             if t, ok := v.(int); ok {
54                 surveyorTime = t / 2
55                 if surveyorTime == 0 {
56                     surveyorTime = 1
57                 }
58             }
59         }
60         options[mangos.OptionSurveyTime] = time.Duration(surveyorTime) * time.Second
61     }
62     return options
63 }
64
65 func setSocketOptions(sock mangos.Socket, options map[string]interface{}) error {
66
67     for k, v := range options {
68         if err := sock.SetOption(k, v); err != nil {
69             return err
70         }
71     }
72     return nil
73 }