summaryrefslogtreecommitdiffstats
path: root/fluent-bit/tests/runtime/wasm/go/modify_record.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--fluent-bit/tests/runtime/wasm/go/modify_record.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/fluent-bit/tests/runtime/wasm/go/modify_record.go b/fluent-bit/tests/runtime/wasm/go/modify_record.go
new file mode 100644
index 00000000..8a53a87f
--- /dev/null
+++ b/fluent-bit/tests/runtime/wasm/go/modify_record.go
@@ -0,0 +1,39 @@
+package main
+
+import (
+ "fmt"
+ "time"
+ "unsafe"
+
+ "github.com/valyala/fastjson"
+)
+
+//export filter_modify_record
+func filter_modify_record(tag *uint8, tag_len uint, time_sec uint, time_nsec uint, record *uint8, record_len uint) *uint8 {
+ _ = unsafe.Slice(tag, tag_len) // Note, requires Go 1.17+ (tinygo 0.20+)
+ brecord := unsafe.Slice(record, record_len)
+ _ = time.Unix(int64(time_sec), int64(time_nsec))
+
+ br := string(brecord)
+ var p fastjson.Parser
+ value, err := p.Parse(br)
+ if err != nil {
+ fmt.Println(err)
+ return nil
+ }
+ obj, err := value.Object()
+ if err != nil {
+ fmt.Println(err)
+ return nil
+ }
+
+ var arena fastjson.Arena
+ obj.Set("modify", arena.NewString(string("yes")))
+ s := obj.String()
+ s += string(rune(0)) // Note: explicit null terminator.
+ rv := []byte(s)
+
+ return &rv[0]
+}
+
+func main() {}