Stop sending empty messages to consumer
[nonrtric.git] / dmaap-mediator-producer / internal / jobs / jobs.go
index 0bf2f12..c84e277 100644 (file)
@@ -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 {