Skip to content

Commit

Permalink
Simplify filter flag handling. Rename Filter interface.
Browse files Browse the repository at this point in the history
  • Loading branch information
bemasher committed Jul 12, 2015
1 parent 548dac1 commit 7314e7a
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 14 deletions.
20 changes: 12 additions & 8 deletions flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ var symbolLength = flag.Int("symbollength", 72, "symbol length in samples, see -
var decimation = flag.Int("decimation", 1, "integer decimation factor, keep every nth sample")

var timeLimit = flag.Duration("duration", 0, "time to run for, 0 for infinite, ex. 1h5m10s")
var meterID UintMap
var meterType UintMap
var meterID MeterIDFilter
var meterType MeterTypeFilter

var unique = flag.Bool("unique", false, "suppress duplicate messages from each meter")

Expand All @@ -58,8 +58,8 @@ var quiet = flag.Bool("quiet", false, "suppress printing state information at st
var single = flag.Bool("single", false, "one shot execution")

func RegisterFlags() {
meterID = make(UintMap)
meterType = make(UintMap)
meterID = MeterIDFilter{make(UintMap)}
meterType = MeterTypeFilter{make(UintMap)}

flag.Var(meterID, "filterid", "display only messages matching an id in a comma-separated list of ids.")
flag.Var(meterType, "filtertype", "display only messages matching a type in a comma-separated list of types.")
Expand Down Expand Up @@ -171,16 +171,20 @@ func (m UintMap) Set(value string) error {
return nil
}

type MeterIDFilter UintMap
type MeterIDFilter struct {
UintMap
}

func (m MeterIDFilter) Filter(msg parse.Message) bool {
return m[uint(msg.MeterID())]
return m.UintMap[uint(msg.MeterID())]
}

type MeterTypeFilter UintMap
type MeterTypeFilter struct {
UintMap
}

func (m MeterTypeFilter) Filter(msg parse.Message) bool {
return m[uint(msg.MeterType())]
return m.UintMap[uint(msg.MeterType())]
}

type UniqueFilter map[uint][]byte
Expand Down
8 changes: 4 additions & 4 deletions parse/parse.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,9 @@ func (msg LogMessage) Record() (r []string) {
return r
}

type FilterChain []Filter
type FilterChain []MessageFilter

func (fc *FilterChain) Add(filter Filter) {
func (fc *FilterChain) Add(filter MessageFilter) {
*fc = append(*fc, filter)
}

Expand All @@ -90,14 +90,14 @@ func (fc FilterChain) Match(msg Message) bool {
}

for _, filter := range fc {
if !filter.Filter(msg) {
if !filter.MessageFilter(msg) {
return false
}
}

return true
}

type Filter interface {
type MessageFilter interface {
Filter(Message) bool
}
4 changes: 2 additions & 2 deletions recv.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,9 @@ func (rcvr *Receiver) NewReceiver() {
case "unique":
rcvr.fc.Add(NewUniqueFilter())
case "filterid":
rcvr.fc.Add(MeterIDFilter(meterID))
rcvr.fc.Add(meterID)
case "filtertype":
rcvr.fc.Add(MeterTypeFilter(meterType))
rcvr.fc.Add(meterType)
default:
fmt.Println(f.Name)
}
Expand Down

0 comments on commit 7314e7a

Please sign in to comment.