package deliver import ( "time" "nanomsg.org/go-mangos" ) // maxRecvSize max recv size var ( maxRecvSize = 33 * 1024 * 1024 surveyorTime = 0 timeout = time.Duration(25) ) func setTimeOut(tm int) { timeout = time.Duration(tm) } 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] = timeout * time.Millisecond options[mangos.OptionSendDeadline] = timeout * time.Millisecond // 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 }