@@ -22,6 +22,7 @@ const (
22
22
RendererNetwork RendererID = "network"
23
23
RendererDateTime RendererID = "datetime"
24
24
RendererDateTimeNano RendererID = "datetimenano"
25
+ RendererString RendererID = "string"
25
26
)
26
27
27
28
var (
33
34
RendererProto : ProtoRenderer ,
34
35
RendererDateTime : DateTimeRenderer ,
35
36
RendererDateTimeNano : DateTimeNanoRenderer ,
37
+ RendererString : StringRenderer ,
36
38
}
37
39
38
40
defaultRenderers = map [string ]RenderFunc {
@@ -95,6 +97,15 @@ func NilRenderer(msg *ProtoProducerMessage, fieldName string, data interface{})
95
97
return data
96
98
}
97
99
100
+ func StringRenderer (msg * ProtoProducerMessage , fieldName string , data interface {}) interface {} {
101
+ if dataC , ok := data .([]byte ); ok {
102
+ return string (dataC )
103
+ } else if dataC , ok := data .(string ); ok {
104
+ return string (dataC )
105
+ } // maybe should support uint64?
106
+ return NilRenderer (msg , fieldName , data )
107
+ }
108
+
98
109
func DateTimeRenderer (msg * ProtoProducerMessage , fieldName string , data interface {}) interface {} {
99
110
if dataC , ok := data .(uint64 ); ok {
100
111
ts := time .Unix (int64 (dataC ), 0 ).UTC ()
@@ -151,13 +162,17 @@ func IPRenderer(msg *ProtoProducerMessage, fieldName string, data interface{}) i
151
162
func EtypeRenderer (msg * ProtoProducerMessage , fieldName string , data interface {}) interface {} {
152
163
if dataC , ok := data .(uint32 ); ok {
153
164
return etypeName [dataC ]
165
+ } else if dataC , ok := data .(uint64 ); ok { // supports protobuf mapped fields
166
+ return etypeName [uint32 (dataC )]
154
167
}
155
168
return "unknown"
156
169
}
157
170
158
171
func ProtoRenderer (msg * ProtoProducerMessage , fieldName string , data interface {}) interface {} {
159
172
if dataC , ok := data .(uint32 ); ok {
160
173
return protoName [dataC ]
174
+ } else if dataC , ok := data .(uint64 ); ok {
175
+ return protoName [uint32 (dataC )]
161
176
}
162
177
return "unknown"
163
178
}
0 commit comments