Преглед изворни кода

add urbit status init to broadcast boostrap

reid пре 2 година
родитељ
комит
ff0d9236d1
1 измењених фајлова са 12 додато и 1 уклоњено
  1. 12 1
      broadcast/broadcast.go

+ 12 - 1
broadcast/broadcast.go

@@ -111,7 +111,18 @@ func bootstrapBroadcastState(config structs.SysConfig) (structs.AuthBroadcast, e
 func UpdateBroadcastState(values map[string]interface{}) error {
     mu.Lock()
     defer mu.Unlock()
-    return recursiveUpdate(reflect.ValueOf(&broadcastState).Elem(), reflect.ValueOf(values))
+    v := reflect.ValueOf(&broadcastState).Elem()
+    for key, value := range values {
+        field := v.FieldByName(key)
+        if !field.IsValid() || !field.CanSet() {
+            return fmt.Errorf("field %s does not exist or is not settable", key)
+        }
+        if err := recursiveUpdate(field, reflect.ValueOf(value)); err != nil {
+            return err
+        }
+    }
+    BroadcastToClients()
+    return nil
 }
 
 // this allows us to insert stuff into nested vals and not overwrite the existing contents