package main import ( "github.com/bytecodealliance/wasm-tools-go/cm" "gitea.rebus.ninja/lore/wasm-nats-producer-client/gen/wasmcloud/messaging/consumer" "gitea.rebus.ninja/lore/wasm-nats-producer-client/gen/wasmcloud/messaging/types" logger "gitea.rebus.ninja/lore/wasm-nats-producer-client/gen/wasi/logging/logging" //config "gitea.rebus.ninja/lore/wasm-nats-producer-client/gen/wasi/config/runtime" ) type messagingConsumerAdapter struct { Publish func(msg types.BrokerMessage) (result cm.Result[string, struct{}, string]) } // NOTE(lxf): this is overridden in tests var messagingConsumer = &messagingConsumerAdapter{ Publish: consumer.Publish, } func loop() cm.Result[string, struct{}, string] { // TODO implement the logic to get the destination topic from the config // dest_topic := config.GetAll() dest_topic := "test.reply" // TASK for true { // generate random message data := []byte("Hello, World!") // Send reply reply := types.BrokerMessage{ Subject: dest_topic, Body: cm.ToList(data), ReplyTo: cm.None[string](), } res := messagingConsumer.Publish(reply) if res.IsErr() { logger.Log(logger.LevelError, "MessageHandler", "Failed to send reply, error: " + *res.Err()) return res } } return cm.OK[cm.Result[string, struct{}, string]](struct{}{}) }