refactor StatSum to use RSRParsers and add conn_status converter

This commit is contained in:
ionutboangiu
2025-10-15 10:36:50 +03:00
committed by Dan Christian Bogos
parent 22e02f18df
commit b54e3b54ac
6 changed files with 85 additions and 66 deletions

View File

@@ -828,6 +828,7 @@ const (
MetaSIPURIMethod = "*sipuri_method"
MetaSIPURIHost = "*sipuri_host"
MetaSIPURIUser = "*sipuri_user"
MetaConnStatus = "*conn_status"
E164DomainConverter = "*e164Domain"
E164Converter = "*e164"
URLDecConverter = "*urldecode"

View File

@@ -132,6 +132,8 @@ func NewDataConverter(params string) (conv DataConverter, err error) {
return NewRandomConverter(params[len(MetaRandom)+1:])
case strings.HasPrefix(params, MetaStrip):
return NewStripConverter(params)
case params == MetaConnStatus:
return ConnStatusConverter{}, nil
case strings.HasPrefix(params, MetaGigawords):
return new(GigawordsConverter), nil
default:
@@ -841,3 +843,21 @@ func (ts TimeStringConverter) Convert(in any) (out any, err error) {
tm = tm.In(ts.loc)
return tm.Format(ts.layout), nil
}
// ConnStatusConverter converts connection status strings to numeric values.
// Returns 1 for UP, -1 for DOWN, and 0 for DUPLICATE.
type ConnStatusConverter struct{}
// Convert implements DataConverter interface
func (c ConnStatusConverter) Convert(in any) (any, error) {
status := IfaceAsString(in)
switch status {
case ConnStatusUp:
return 1, nil
case ConnStatusDown:
return -1, nil
case ConnStatusDuplicate:
return 0, nil
}
return 0, fmt.Errorf("unsupported connection status: %q", status)
}