optracker: fix complexity of filter fn

License: MIT
Signed-off-by: Adrian Lanzafame <adrianlanzafame92@gmail.com>
This commit is contained in:
Adrian Lanzafame 2018-06-11 11:47:06 +10:00 committed by Hector Sanjuan
parent df2753dfc6
commit bec77546ce

View File

@ -247,36 +247,27 @@ func filterOpsMap(ops map[string]*Operation, filters []interface{}) map[string]*
}
if len(filters) == 1 {
switch f := filters[0].(type) {
case OperationType:
for _, op := range ops {
if op.Type() == f {
fltops[op.Cid().String()] = op
}
}
case Phase:
for _, op := range ops {
if op.Phase() == f {
fltops[op.Cid().String()] = op
}
}
}
filter(ops, fltops, filters[0])
return fltops
}
mainFilter, filters := filters[0], filters[1:]
for _, op := range ops {
switch mainFilter.(type) {
case OperationType:
if op.Type() == mainFilter {
fltops[op.Cid().String()] = op
}
case Phase:
if op.Phase() == mainFilter {
fltops[op.Cid().String()] = op
}
}
}
filter(ops, fltops, mainFilter)
return filterOpsMap(fltops, filters)
}
func filter(in, out map[string]*Operation, filter interface{}) {
for _, op := range in {
switch filter.(type) {
case OperationType:
if op.Type() == filter {
out[op.Cid().String()] = op
}
case Phase:
if op.Phase() == filter {
out[op.Cid().String()] = op
}
}
}
}