From 832913a2158b8484777be74b95edfa9a14c3115b Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 20 Oct 2018 13:02:45 +0200 Subject: replace maps with lru --- main.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index 4ce6be8..614211e 100644 --- a/main.go +++ b/main.go @@ -45,8 +45,8 @@ func (n *Notify) Write(p []byte) (int, error) { func privmsg(room string) irc.HandlerFunc { var ( - last = make(map[string]string) - lastRe = make(map[string]time.Time) + last, _ = lru.New(100) + lastRe, _ = lru.New(100) titles, _ = lru.New(100) ) return func(conn *irc.Conn, line *irc.Line) { @@ -55,22 +55,25 @@ func privmsg(room string) irc.HandlerFunc { log.Println("panic", r) } }() - switch t := line.Text(); { + t := line.Text() + l, _ := last.Get(line.Nick) + switch { case line.Nick == conn.Me().Nick: // ignore self case isFlood(t): log.Println("flood", line.Nick) conn.Kick(room, line.Nick) - case noSpaceCompare(t, last[line.Nick]): + case noSpaceCompare(t, l.(string)): log.Println("kick", line.Nick) conn.Kick(room, line.Nick) case strings.HasPrefix(t, "s"): global := strings.HasSuffix(t, "g") - if tofix, ok := last[line.Nick]; ok { - d := time.Since(lastRe[line.Nick]) - fixed, err := re(tofix, t[1:], global) + if tofix, ok := last.Get(line.Nick); ok { + lre, _ := lastRe.Get(line.Nick) + d := time.Since(lre.(time.Time)) + fixed, err := re(tofix.(string), t[1:], global) if err == nil && fixed != tofix && d > time.Second*30 { - lastRe[line.Nick] = time.Now() + lastRe.Add(line.Nick, time.Now()) log.Println("regexp", t) fmt.Fprintf(NewNotify(conn, line.Target()), "%v meant to say: %s", line.Nick, fixed) return @@ -97,7 +100,7 @@ func privmsg(room string) irc.HandlerFunc { } } } - last[line.Nick] = t + last.Add(line.Nick, t) } } } -- cgit v1.2.3