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 { if len(filters) == 1 {
switch f := filters[0].(type) { filter(ops, fltops, filters[0])
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
}
}
}
return fltops return fltops
} }
mainFilter, filters := filters[0], filters[1:] mainFilter, filters := filters[0], filters[1:]
for _, op := range ops { filter(ops, fltops, mainFilter)
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
}
}
}
return filterOpsMap(fltops, filters) 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
}
}
}
}