use exp/slices for working with 'receivers' list
This commit is contained in:
parent
7b191b1eb2
commit
e76da8533d
5 changed files with 18 additions and 9 deletions
|
@ -4,6 +4,7 @@ import (
|
|||
lib "git.sr.ht/~cco/go-scopes"
|
||||
"git.sr.ht/~cco/go-scopes/core/message"
|
||||
"git.sr.ht/~cco/go-scopes/logging"
|
||||
"golang.org/x/exp/slices"
|
||||
)
|
||||
|
||||
type BaseSpec = baseSpec
|
||||
|
@ -22,15 +23,20 @@ func (spec *baseSpec) Receivers() []lib.Addressable {
|
|||
}
|
||||
|
||||
func (spec *baseSpec) AddReceiver(rcv lib.Addressable) lib.ActionSpec {
|
||||
for _, r := range spec.receivers {
|
||||
if r == rcv {
|
||||
return spec
|
||||
}
|
||||
}
|
||||
if slices.Index(spec.receivers, rcv) == -1 {
|
||||
spec.receivers = append(spec.receivers, rcv)
|
||||
}
|
||||
return spec
|
||||
}
|
||||
|
||||
func (spec *baseSpec) RemoveReceiver(rcv lib.Addressable) {
|
||||
rcvs := spec.receivers
|
||||
idx := slices.Index(rcvs, rcv)
|
||||
if idx != -1 {
|
||||
spec.receivers = slices.Delete(rcvs, idx, idx+1)
|
||||
}
|
||||
}
|
||||
|
||||
func Base(hdlr lib.ActionHandler, rcvs ...string) *baseSpec {
|
||||
spec := baseSpec{handler: hdlr}
|
||||
for _, rcv := range rcvs {
|
||||
|
|
3
go.mod
3
go.mod
|
@ -5,6 +5,8 @@ go 1.20
|
|||
require (
|
||||
github.com/gin-gonic/gin v1.9.1
|
||||
github.com/rs/zerolog v1.29.1
|
||||
golang.org/x/exp v0.0.0-20230725093048-515e97ebf090
|
||||
golang.org/x/net v0.10.0
|
||||
)
|
||||
|
||||
require (
|
||||
|
@ -28,7 +30,6 @@ require (
|
|||
github.com/ugorji/go/codec v1.2.11 // indirect
|
||||
golang.org/x/arch v0.3.0 // indirect
|
||||
golang.org/x/crypto v0.9.0 // indirect
|
||||
golang.org/x/net v0.10.0 // indirect
|
||||
golang.org/x/sys v0.8.0 // indirect
|
||||
golang.org/x/text v0.9.0 // indirect
|
||||
google.golang.org/protobuf v1.30.0 // indirect
|
||||
|
|
5
go.sum
5
go.sum
|
@ -25,8 +25,8 @@ github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
|||
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
|
@ -73,6 +73,8 @@ golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k=
|
|||
golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||
golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
|
||||
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
|
||||
golang.org/x/exp v0.0.0-20230725093048-515e97ebf090 h1:Di6/M8l0O2lCLc6VVRWhgCiApHV8MnQurBnFSHsQtNY=
|
||||
golang.org/x/exp v0.0.0-20230725093048-515e97ebf090/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
|
||||
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
|
||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
|
@ -83,7 +85,6 @@ golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
|
|||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
|
||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
|
||||
|
|
|
@ -48,7 +48,7 @@ func disconnect(src, tgt lib.Context) { //, pattern string) {
|
|||
for _, act := range cfg.Actions() {
|
||||
//if act.Pattern().String() == pattern {
|
||||
for _, spec := range act.Specs() {
|
||||
//spec.RemoveReceiver(tgt)
|
||||
spec.RemoveReceiver(tgt)
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
|
|
@ -84,6 +84,7 @@ type ActionSpec interface {
|
|||
Handler() ActionHandler
|
||||
Receivers() []Addressable
|
||||
AddReceiver(Addressable) ActionSpec
|
||||
RemoveReceiver(Addressable)
|
||||
}
|
||||
|
||||
// procedures and handlers
|
||||
|
|
Loading…
Add table
Reference in a new issue