X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=dmaap-mediator-producer%2Finternal%2Fjobs%2Fjobs.go;fp=dmaap-mediator-producer%2Finternal%2Fjobs%2Fjobs.go;h=c84e2773e1c42447270a7fc03c9f3b980b9b2506;hb=4a9589b4743667175a584e628e4fd0f97499482a;hp=0bf2f12a06d709ce4d445963078f7737e82cdcaf;hpb=db7b5c801bdc96889aea18ab190f2b72fa8d8e06;p=nonrtric.git diff --git a/dmaap-mediator-producer/internal/jobs/jobs.go b/dmaap-mediator-producer/internal/jobs/jobs.go index 0bf2f12a..c84e2773 100644 --- a/dmaap-mediator-producer/internal/jobs/jobs.go +++ b/dmaap-mediator-producer/internal/jobs/jobs.go @@ -399,15 +399,30 @@ func (j *job) read(bufferParams BufferTimeout) []byte { } func getAsJSONArray(rawMsgs [][]byte) []byte { - json := `"[` + if len(rawMsgs) == 0 { + return []byte("") + } + strings := "" for i := 0; i < len(rawMsgs); i++ { - msg := string(rawMsgs[i]) - json = json + strings.ReplaceAll(msg, "\"", "\\\"") - if i < len(rawMsgs)-1 { - json = json + "," - } + strings = strings + makeIntoString(rawMsgs[i]) + strings = addSeparatorIfNeeded(strings, i, len(rawMsgs)) } - return []byte(json + `]"`) + return []byte(wrapInJSONArray(strings)) +} + +func makeIntoString(rawMsg []byte) string { + return `"` + strings.ReplaceAll(string(rawMsg), "\"", "\\\"") + `"` +} + +func addSeparatorIfNeeded(strings string, position, length int) string { + if position < length-1 { + strings = strings + "," + } + return strings +} + +func wrapInJSONArray(strings string) string { + return "[" + strings + "]" } func (j *job) waitTimeout(wg *sync.WaitGroup, timeout time.Duration) bool {