+func GetPortData(pname string) (d PortData) {
+ var getPolicies = func(policies []interface{}) (plist []int) {
+ for _, p := range policies {
+ plist = append(plist, int(p.(float64)))
+ }
+ return plist
+ }
+
+ if viper.IsSet("messaging") == false {
+ if pname == "http" {
+ d.Port = 8080
+ }
+ if pname == "rmr-data" {
+ d.Port = 4560
+ }
+ return
+ }
+
+ for _, v := range viper.GetStringMap("messaging")["ports"].([]interface{}) {
+ if n, ok := v.(map[string]interface{})["name"].(string); ok && n == pname {
+ d.Name = n
+ if p, _ := v.(map[string]interface{})["port"].(float64); ok {
+ d.Port = int(p)
+ }
+ if m, _ := v.(map[string]interface{})["maxSize"].(float64); ok {
+ d.MaxSize = int(m)
+ }
+ if m, _ := v.(map[string]interface{})["threadType"].(float64); ok {
+ d.ThreadType = int(m)
+ }
+ if m, _ := v.(map[string]interface{})["lowLatency"].(bool); ok {
+ d.LowLatency = bool(m)
+ }
+ if m, _ := v.(map[string]interface{})["fastAck"].(bool); ok {
+ d.FastAck = bool(m)
+ }
+ if m, _ := v.(map[string]interface{})["maxRetryOnFailure"].(float64); ok {
+ d.MaxRetryOnFailure = int(m)
+ }
+ if policies, ok := v.(map[string]interface{})["policies"]; ok {
+ d.Policies = getPolicies(policies.([]interface{}))
+ }
+ }
+ }
+ return
+}
+