package deliver
|
|
import (
|
"time"
|
|
"nanomsg.org/go-mangos"
|
)
|
|
// maxRecvSize max recv size
|
var (
|
maxRecvSize = 33 * 1024 * 1024
|
surveyorTime = -1
|
)
|
|
func optDefault() map[string]interface{} {
|
options := make(map[string]interface{})
|
|
options[mangos.OptionMaxRecvSize] = maxRecvSize
|
options[mangos.OptionWriteQLen] = 0
|
options[mangos.OptionReadQLen] = 0
|
options[mangos.OptionRecvDeadline] = time.Second
|
options[mangos.OptionSendDeadline] = time.Second
|
// options[mangos.OptionRaw] = true
|
|
return options
|
}
|
|
func optRaw(options map[string]interface{}) map[string]interface{} {
|
|
options[mangos.OptionRaw] = true
|
return options
|
}
|
|
func optOther(p protocol, options map[string]interface{}, o ...interface{}) map[string]interface{} {
|
// len 1 or 0, sub topic
|
if p == SUB {
|
if len(o) == 1 {
|
v := o[0]
|
if t, ok := v.(string); ok {
|
options[mangos.OptionSubscribe] = []byte(t)
|
}
|
} else {
|
options[mangos.OptionSubscribe] = []byte("")
|
}
|
}
|
|
// len 1 or 0, surveyor time
|
if p == SURVEYOR {
|
if len(o) == 1 {
|
v := o[0]
|
if t, ok := v.(int); ok {
|
surveyorTime = t / 2
|
if surveyorTime == 0 {
|
surveyorTime = 1
|
}
|
}
|
}
|
options[mangos.OptionSurveyTime] = time.Duration(surveyorTime) * time.Second
|
}
|
return options
|
}
|
|
func setSocketOptions(sock mangos.Socket, options map[string]interface{}) error {
|
|
for k, v := range options {
|
if err := sock.SetOption(k, v); err != nil {
|
return err
|
}
|
}
|
return nil
|
}
|