package main import ( "github.com/bytecodealliance/wasm-tools-go/cm" "gitea.rebus.ninja/lore/go-nats-client/gen/wasmcloud/messaging/consumer" "gitea.rebus.ninja/lore/go-nats-client/gen/wasmcloud/messaging/types" logger "gitea.rebus.ninja/lore/go-nats-client/gen/wasi/logging/logging" ) 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 handleMessage(msg types.BrokerMessage) cm.Result[string, struct{}, string] { logger.Log(logger.LevelInfo,"MessageHandler", "Received message on subject" + msg.Subject) reply := types.BrokerMessage{ Subject: msg.Subject + ".reply", Body: msg.Body, 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{}{}) }