Skip to content

Commit

Permalink
Use json messages for feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewmarklloyd committed Apr 25, 2023
1 parent 89b5185 commit 48cf3b5
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 6 deletions.
24 changes: 18 additions & 6 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func main() {
renderMessage := mqtt.RenderMessage{}
err := json.Unmarshal([]byte(message), &renderMessage)
if err != nil {
handleError(fmt.Errorf("unmarshalling render message: %w", err))
handleError(fmt.Errorf("unmarshalling render message: %w", err), mqtt.UnknownRepoURL)
return
}

Expand All @@ -76,13 +76,17 @@ func main() {

err = subscribeHandler(renderMessage)
if err != nil {
handleError(err)
handleError(err, renderMessage.RepoURL)
return
}

logger.Info("successfully rendered and uploaded: ", renderMessage)

err = messageClient.Publish(mqtt.RenderSuccessTopic, "successfully finished render, video is uploaded to storage")
err = messageClient.PublishRenderFeedbackMessage(mqtt.RenderSuccessTopic, mqtt.RenderFeedbackMessage{
Status: mqtt.StatusSucceess,
RepoURL: renderMessage.RepoURL,
Message: "successfully finished render, video is uploaded to storage",
})
if err != nil {
logger.Errorf("publishing success message: %w", err)
}
Expand All @@ -106,7 +110,11 @@ func subscribeHandler(renderMessage mqtt.RenderMessage) error {
return fmt.Errorf("cloning repository %s: %s", renderMessage.RepoURL, err.Error())
}

err = messageClient.Publish(mqtt.RenderAckTopic, "successfully cloned repo and started render")
err = messageClient.PublishRenderFeedbackMessage(mqtt.RenderAckTopic, mqtt.RenderFeedbackMessage{
Status: mqtt.StatusSucceess,
RepoURL: renderMessage.RepoURL,
Message: "successfully cloned repo and started render",
})
if err != nil {
return fmt.Errorf("publishing ack message: %w", err)
}
Expand Down Expand Up @@ -144,9 +152,13 @@ func render(fileName string) error {
return nil
}

func handleError(err error) {
func handleError(err error, repoURL string) {
logger.Error(err)
pubErr := messageClient.Publish(mqtt.RenderErrTopic, fmt.Sprintf("error during render: %s", err.Error()))
pubErr := messageClient.PublishRenderFeedbackMessage(mqtt.RenderErrTopic, mqtt.RenderFeedbackMessage{
Status: mqtt.StatusSucceess,
RepoURL: repoURL,
Message: fmt.Sprintf("error during render: %s", err.Error()),
})
if pubErr != nil {
logger.Errorf("error publishing to renderErrTopic: %s", pubErr)
}
Expand Down
11 changes: 11 additions & 0 deletions pkg/mqtt/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,20 @@ const (
RenderAckTopic = "math-visual-proofs-agent/render/ack"
RenderErrTopic = "math-visual-proofs-agent/render/error"
RenderSuccessTopic = "math-visual-proofs-agent/render/success"

StatusSucceess = "success"
StatusError = "error"

UnknownRepoURL = "unknownRepoURL"
)

type RenderMessage struct {
FileNames []string `json:"fileNames"`
RepoURL string `json:"repoURL"`
}

type RenderFeedbackMessage struct {
RepoURL string `json:"repoURL"`
Status string `json:"status"`
Message string `json:"message"`
}
13 changes: 13 additions & 0 deletions pkg/mqtt/mqtt.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package mqtt

import (
"encoding/json"

mqtt "github.com/eclipse/paho.mqtt.golang"
)

Expand Down Expand Up @@ -51,3 +53,14 @@ func (c MqttClient) Publish(topic, message string) error {
token.Wait()
return token.Error()
}

func (c MqttClient) PublishRenderFeedbackMessage(topic string, message RenderFeedbackMessage) error {
m, err := json.Marshal(message)
if err != nil {
return err
}

token := c.client.Publish(topic, 1, false, string(m))
token.Wait()
return token.Error()
}

0 comments on commit 48cf3b5

Please sign in to comment.