lol
This commit is contained in:
parent
5e9454d225
commit
9d961ec0ba
|
@ -65,7 +65,7 @@ func _main() error {
|
|||
handler.AddDomain[domains.Todo](h, "monitor")
|
||||
handler.AddDomain[domains.Wm](h, "wm")
|
||||
handler.AddDomain[domains.Todo](h, "rule")
|
||||
handler.AddDomain[domains.Todo](h, "config")
|
||||
handler.AddDomain[domains.Config](h, "config")
|
||||
handler.AddDomain[domains.Todo](h, "subscribe")
|
||||
handler.AddDomain[domains.Todo](h, "quit")
|
||||
handler.AddDomain[domains.Query](h, "query")
|
||||
|
|
|
@ -73,9 +73,6 @@ func (m *Modifier[T]) FillDefaults() {
|
|||
ft := rt.Field(i)
|
||||
k := ft.Tag.Get("cfg")
|
||||
dv := ft.Tag.Get("default")
|
||||
if dv == "" {
|
||||
continue
|
||||
}
|
||||
m.Set(k, dv)
|
||||
}
|
||||
return
|
||||
|
@ -92,10 +89,13 @@ func (m *Modifier[T]) setup() {
|
|||
kind := ft.Type.Elem().Kind()
|
||||
switch kind {
|
||||
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
||||
m.setters[k] = func(v string) error {
|
||||
val, err := strconv.ParseUint(v, 10, 64)
|
||||
if err != nil {
|
||||
return copies.NewInvalidValueErr(k, v)
|
||||
m.setters[k] = func(v string) (err error) {
|
||||
var val uint64
|
||||
if v != "" {
|
||||
val, err = strconv.ParseUint(v, 10, 64)
|
||||
if err != nil {
|
||||
return copies.NewInvalidValueErr(k, v)
|
||||
}
|
||||
}
|
||||
if fv.IsNil() {
|
||||
fv.Set(reflect.New(ft.Type.Elem()))
|
||||
|
@ -110,10 +110,13 @@ func (m *Modifier[T]) setup() {
|
|||
return fmt.Sprintf("%v", fv.Elem()), nil
|
||||
}
|
||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
||||
m.setters[k] = func(v string) error {
|
||||
val, err := strconv.Atoi(v)
|
||||
if err != nil {
|
||||
return copies.NewInvalidValueErr(k, v)
|
||||
m.setters[k] = func(v string) (err error) {
|
||||
var val int
|
||||
if v != "" {
|
||||
val, err = strconv.Atoi(v)
|
||||
if err != nil {
|
||||
return copies.NewInvalidValueErr(k, v)
|
||||
}
|
||||
}
|
||||
if fv.IsNil() {
|
||||
fv.Set(reflect.New(ft.Type.Elem()))
|
||||
|
@ -133,7 +136,7 @@ func (m *Modifier[T]) setup() {
|
|||
switch strings.ToLower(v) {
|
||||
case "true", "on":
|
||||
b = true
|
||||
case "false", "off":
|
||||
case "false", "off", "":
|
||||
b = false
|
||||
default:
|
||||
return copies.NewInvalidValueErr(k, v)
|
||||
|
|
|
@ -24,8 +24,6 @@ type s1 struct {
|
|||
func TestModifierS1(t *testing.T) {
|
||||
s := &s1{}
|
||||
m := cfg.NewModifier(s)
|
||||
m.FillDefaults()
|
||||
assert.EqualValues(t, *m.Ref.C, "crabs")
|
||||
|
||||
m.Set("b", "on")
|
||||
assert.EqualValues(t, *m.Ref.B, true)
|
||||
|
@ -33,4 +31,7 @@ func TestModifierS1(t *testing.T) {
|
|||
m.Set("d", "442")
|
||||
assert.EqualValues(t, *m.Ref.D, 442)
|
||||
|
||||
m.FillDefaults()
|
||||
assert.EqualValues(t, *m.Ref.C, "crabs")
|
||||
|
||||
}
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package domains
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"tuxpa.in/t/wm/src/copies"
|
||||
"tuxpa.in/t/wm/src/sock"
|
||||
)
|
||||
|
@ -61,6 +59,6 @@ func (n *Config) parse(msg *sock.Msg) (bool, error) {
|
|||
if msg.HasNext() {
|
||||
return false, &copies.ErrInvalidArgumentCount{Name: "2 or 3", Value: len(msg.Args())}
|
||||
}
|
||||
return false, fmt.Errorf(`unknown option: '%s'`, arg)
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,11 +33,11 @@ func (h *Handler) Run(msg *sock.Msg) {
|
|||
if msg.Err(err) {
|
||||
return
|
||||
}
|
||||
err = msg.Reply(string(resp))
|
||||
err = msg.Reply(resp)
|
||||
if msg.Err(err) {
|
||||
return
|
||||
}
|
||||
msg.Reply("")
|
||||
msg.Reply(nil)
|
||||
}
|
||||
|
||||
func (h *Handler) run(msg *sock.Msg) ([]byte, error) {
|
||||
|
|
|
@ -56,17 +56,19 @@ func (m *Msg) Err(e error) bool {
|
|||
wr.Flush()
|
||||
return true
|
||||
}
|
||||
func (m *Msg) Reply(ans string) error {
|
||||
func (m *Msg) Reply(xs []byte) error {
|
||||
if !m.closed.CompareAndSwap(false, true) {
|
||||
return nil
|
||||
}
|
||||
defer m.c.Close()
|
||||
wr := bufio.NewWriter(m.c)
|
||||
_, err := wr.Write([]byte(ans))
|
||||
_, err := wr.Write(xs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
wr.Write([]byte("\n"))
|
||||
if len(xs) != 0 {
|
||||
wr.Write([]byte("\n"))
|
||||
}
|
||||
wr.Write([]byte{0})
|
||||
wr.Flush()
|
||||
return nil
|
||||
|
|
Loading…
Reference in New Issue