mph_matcher_compact.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package strmatcher
  2. import (
  3. "bytes"
  4. "encoding/gob"
  5. "io"
  6. )
  7. func init() {
  8. gob.Register(&RegexMatcher{})
  9. gob.Register(fullMatcher(""))
  10. gob.Register(substrMatcher(""))
  11. gob.Register(domainMatcher(""))
  12. }
  13. func (g *MphMatcherGroup) Serialize(w io.Writer) error {
  14. data := MphMatcherGroup{
  15. Ac: g.Ac,
  16. OtherMatchers: g.OtherMatchers,
  17. Rules: g.Rules,
  18. Level0: g.Level0,
  19. Level0Mask: g.Level0Mask,
  20. Level1: g.Level1,
  21. Level1Mask: g.Level1Mask,
  22. Count: g.Count,
  23. }
  24. return gob.NewEncoder(w).Encode(data)
  25. }
  26. func NewMphMatcherGroupFromBuffer(data []byte) (*MphMatcherGroup, error) {
  27. var gData MphMatcherGroup
  28. if err := gob.NewDecoder(bytes.NewReader(data)).Decode(&gData); err != nil {
  29. return nil, err
  30. }
  31. g := NewMphMatcherGroup()
  32. g.Ac = gData.Ac
  33. g.OtherMatchers = gData.OtherMatchers
  34. g.Rules = gData.Rules
  35. g.Level0 = gData.Level0
  36. g.Level0Mask = gData.Level0Mask
  37. g.Level1 = gData.Level1
  38. g.Level1Mask = gData.Level1Mask
  39. g.Count = gData.Count
  40. return g, nil
  41. }