filter.go 637 B

12345678910111213141516171819202122232425262728293031323334
  1. package tinymq
  2. import (
  3. "regexp"
  4. "strings"
  5. )
  6. // 匹配所有的频道
  7. func AllChannelFilter() FilterFunc {
  8. return func(conn *Line) (ok bool) {
  9. return true
  10. }
  11. }
  12. // 正则频道过滤器
  13. func RegChannelFilter(channel *regexp.Regexp) FilterFunc {
  14. return func(conn *Line) (ok bool) {
  15. return channel.MatchString(conn.channel)
  16. }
  17. }
  18. // 字符串频道过滤器
  19. func StrChannelFilter(channel string) FilterFunc {
  20. return func(conn *Line) (ok bool) {
  21. return strings.Contains(conn.channel, channel)
  22. }
  23. }
  24. // 连接过滤器
  25. func LineLinkFilter(line *Line) FilterFunc {
  26. return func(conn *Line) (ok bool) {
  27. return line == conn
  28. }
  29. }