summaryrefslogtreecommitdiff
path: root/pkt-line.h
diff options
context:
space:
mode:
authorJonathan Tan <jonathantanmy@google.com>2019-01-15 19:40:27 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-01-15 19:44:48 (GMT)
commitbc2e795cea607e444a9f985b0dbed5a4d25921c8 (patch)
tree3d155b6f225082f2565e64a464b4f3df22c405f9 /pkt-line.h
parent17069c7fae20f5e3082ee639066a37de5af6030e (diff)
downloadgit-bc2e795cea607e444a9f985b0dbed5a4d25921c8.zip
git-bc2e795cea607e444a9f985b0dbed5a4d25921c8.tar.gz
git-bc2e795cea607e444a9f985b0dbed5a4d25921c8.tar.bz2
pkt-line: introduce struct packet_writer
A future patch will allow the client to request multiplexing of the entire fetch response (and not only during packfile transmission), which in turn allows the server to send progress and keepalive messages at any time during the response. It will be convenient for a future patch if writing options (specifically, whether the written data is to be multiplexed) could be controlled from a single place, so create struct packet_writer to serve as that place, and modify upload-pack to use it. Currently, it only stores the output fd, but a subsequent patch will (as described above) introduce an option to determine if the written data is to be multiplexed. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'pkt-line.h')
-rw-r--r--pkt-line.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/pkt-line.h b/pkt-line.h
index d7e1dbc..023ad29 100644
--- a/pkt-line.h
+++ b/pkt-line.h
@@ -183,4 +183,18 @@ extern enum packet_read_status packet_reader_peek(struct packet_reader *reader);
#define LARGE_PACKET_DATA_MAX (LARGE_PACKET_MAX - 4)
extern char packet_buffer[LARGE_PACKET_MAX];
+struct packet_writer {
+ int dest_fd;
+};
+
+void packet_writer_init(struct packet_writer *writer, int dest_fd);
+
+/* These functions die upon failure. */
+__attribute__((format (printf, 2, 3)))
+void packet_writer_write(struct packet_writer *writer, const char *fmt, ...);
+__attribute__((format (printf, 2, 3)))
+void packet_writer_error(struct packet_writer *writer, const char *fmt, ...);
+void packet_writer_delim(struct packet_writer *writer);
+void packet_writer_flush(struct packet_writer *writer);
+
#endif