sideband: reverse its dependency on pkt-line
A subsequent patch will teach struct packet_reader a new field that, if set, instructs it to interpret read data as multiplexed. This will create a dependency from pkt-line to sideband. To avoid a circular dependency, split recv_sideband() into 2 parts: the reading loop (left in recv_sideband()) and the processing of the contents (in demultiplex_sideband()), and move the former into pkt-line. This reverses the direction of dependency: sideband no longer depends on pkt-line, and pkt-line now depends on sideband. Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
bc2e795cea
commit
fbd76cd450
23
pkt-line.c
23
pkt-line.c
@ -439,6 +439,29 @@ ssize_t read_packetized_to_strbuf(int fd_in, struct strbuf *sb_out)
|
||||
return sb_out->len - orig_len;
|
||||
}
|
||||
|
||||
int recv_sideband(const char *me, int in_stream, int out)
|
||||
{
|
||||
char buf[LARGE_PACKET_MAX + 1];
|
||||
int len;
|
||||
struct strbuf scratch = STRBUF_INIT;
|
||||
enum sideband_type sideband_type;
|
||||
|
||||
while (1) {
|
||||
len = packet_read(in_stream, NULL, NULL, buf, LARGE_PACKET_MAX,
|
||||
0);
|
||||
if (!demultiplex_sideband(me, buf, len, &scratch,
|
||||
&sideband_type))
|
||||
continue;
|
||||
switch (sideband_type) {
|
||||
case SIDEBAND_PRIMARY:
|
||||
write_or_die(out, buf + 1, len - 1);
|
||||
break;
|
||||
default: /* errors: message already written */
|
||||
return sideband_type;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Packet Reader Functions */
|
||||
void packet_reader_init(struct packet_reader *reader, int fd,
|
||||
char *src_buffer, size_t src_len,
|
||||
|
Reference in New Issue
Block a user