]> git.ozlabs.org Git - ccan/commitdiff
json_out: make json_out_finished finish buffer.
authorRusty Russell <rusty@rustcorp.com.au>
Mon, 14 Sep 2020 05:30:55 +0000 (15:00 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 14 Sep 2020 05:30:55 +0000 (15:00 +0930)
For JSON RPC, we can actually write multiple JSON objects back
to back, and we don't want a comma between them.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ccan/json_out/json_out.c
ccan/json_out/json_out.h

index 87deaca85f9ce0375ff9bd299ced923669f7c739..53837e67c33a40f8b1f04aedbe856430b327fcb6 100644 (file)
@@ -337,11 +337,12 @@ char *json_out_direct(struct json_out *jout, size_t len)
        return p;
 }
 
-void json_out_finished(const struct json_out *jout)
+void json_out_finished(struct json_out *jout)
 {
 #ifdef CCAN_JSON_OUT_DEBUG
        assert(tal_count(jout->wrapping) == 0);
 #endif
+       jout->empty = true;
 }
 
 const char *json_out_contents(const struct json_out *jout, size_t *len)
index 2911ff2473bac5cd029eff02558c4fe6ef48bb37..da8b4ffa706206596553c391bc9c608cfcb72b6d 100644 (file)
@@ -177,9 +177,12 @@ bool json_out_add_splice(struct json_out *jout,
  * @jout: the json_out object written to.
  *
  * This simply causes internal assertions that all arrays and objects are
- * finished.  It needs CCAN_JSON_OUT_DEBUG defined to have any effect.
+ * finished. If CCAN_JSON_OUT_DEBUG is defined, it does sanity checks.
+ *
+ * This also resets the empty flag, so there will be no comma added if
+ * another JSON object is written.
  */
-void json_out_finished(const struct json_out *jout);
+void json_out_finished(struct json_out *jout);
 
 /**
  * json_out_contents - read contents from json_out stream.