mirror of
https://github.com/RoganDawes/P4wnP1_aloa.git
synced 2025-03-27 01:51:45 +01:00
Fix: GroupReceiveSequence trigger
This commit is contained in:
parent
cabf0e4e9d
commit
a99836ac08
@ -591,7 +591,7 @@ func (srv *server) StartRpcServerAndWeb(host string, gRPCPort string, webPort st
|
||||
//fmt.Printf("gRPC-web req:\n %v\n", req)
|
||||
grpc_web_srv.ServeHTTP(resp, req) // if content type indicates grpc or REQUEST METHOD IS OPTIONS (pre-flight) serve gRPC-web
|
||||
} else {
|
||||
fmt.Printf("legacy web req:\n %v\n", req)
|
||||
fmt.Printf("legacy web req: %v\n", req.RequestURI)
|
||||
http.FileServer(http.Dir((absWebRoot))).ServeHTTP(resp, req)
|
||||
}
|
||||
}
|
||||
|
@ -163,7 +163,7 @@ func (tam *TriggerActionManager) processing_loop() {
|
||||
//
|
||||
func (tam *TriggerActionManager) processTriggerEvent(evt *pb.Event) {
|
||||
//fmt.Printf("Remaining triggerActions: %+v\n", tam.registeredTriggerAction)
|
||||
//fmt.Printf("Received event: %+v\n", evt)
|
||||
//fmt.Printf("TriggerActionManager Received event: %+v\n", evt)
|
||||
tam.registeredTriggerActionMutex.Lock()
|
||||
defer tam.registeredTriggerActionMutex.Unlock()
|
||||
|
||||
@ -272,18 +272,20 @@ func (tam *TriggerActionManager) onGroupReceive(evt *pb.Event, ta *pb.TriggerAct
|
||||
tam.executeAction(evt, ta, tt, at) // fire action
|
||||
return nil
|
||||
case triggerTypeGroupReceiveSequence:
|
||||
//triggerValues := ta.Trigger.(*pb.TriggerAction_GroupReceiveSequence).GroupReceiveSequence.Values
|
||||
// fmt.Println("### Processing GroupReceive event for trigger type GroupReceiveSequence")
|
||||
triggerGroupName := ta.Trigger.(*pb.TriggerAction_GroupReceiveSequence).GroupReceiveSequence.GroupName
|
||||
if evGroupName != triggerGroupName {
|
||||
// retrieve the sequence checker
|
||||
if sc,exists := tam.groupReceiveSequenceCheckers[ta]; exists {
|
||||
if sc.Check(evValue) {
|
||||
tam.executeAction(evt, ta, tt, at) // fire action
|
||||
}
|
||||
}
|
||||
|
||||
return nil // don't handle on group mismatch, but return without error
|
||||
return nil
|
||||
}
|
||||
// retrieve the sequence checker
|
||||
if sc,exists := tam.groupReceiveSequenceCheckers[ta]; exists {
|
||||
if sc.Check(evValue) {
|
||||
tam.executeAction(evt, ta, tt, at) // fire action
|
||||
}
|
||||
// fmt.Printf("GrpRcvSeq '%s' received '%d': %s\n", triggerGroupName, evValue, sc)
|
||||
}
|
||||
|
||||
return nil // don't handle on group mismatch, but return without error
|
||||
|
||||
|
||||
default:
|
||||
@ -541,7 +543,7 @@ func (tam *TriggerActionManager) AddTriggerAction(ta *pb.TriggerAction) (taAdded
|
||||
//if new ta trigger is GroupReceiveSequence, add a SequenceChecker
|
||||
if triggerGrpRcv,match := ta.Trigger.(*pb.TriggerAction_GroupReceiveSequence); match {
|
||||
tam.groupReceiveSequenceCheckersMutex.Lock()
|
||||
fmt.Printf("##### New val checker %+v\n", triggerGrpRcv.GroupReceiveSequence.Values)
|
||||
//fmt.Printf("##### New val checker %+v\n", triggerGrpRcv.GroupReceiveSequence.Values)
|
||||
tam.groupReceiveSequenceCheckers[ta] = util.NewValueSequenceChecker(triggerGrpRcv.GroupReceiveSequence.Values, triggerGrpRcv.GroupReceiveSequence.IgnoreOutOfOrder)
|
||||
tam.groupReceiveSequenceCheckersMutex.Unlock()
|
||||
}
|
||||
|
@ -1,11 +1,27 @@
|
||||
package util
|
||||
|
||||
import "fmt"
|
||||
|
||||
type ValueSequenceChecker struct {
|
||||
values []int32
|
||||
allowOutOfOrder bool
|
||||
currentPos int
|
||||
}
|
||||
|
||||
func (sc *ValueSequenceChecker) String() string {
|
||||
res := "("
|
||||
for i,v := range sc.values {
|
||||
if i == sc.currentPos { res += "[" }
|
||||
|
||||
res += fmt.Sprintf("%d", v)
|
||||
|
||||
if i == sc.currentPos { res += "]" }
|
||||
if i != len(sc.values)-1 { res += " "}
|
||||
}
|
||||
res += ")"
|
||||
return res
|
||||
}
|
||||
|
||||
func (sc *ValueSequenceChecker) Check(val int32) bool {
|
||||
if len(sc.values) == 0 { return true }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user