int fd;
int state;
+ int skip_newline;
uint16_t argc;
char **argv;
struct flist_head *entry;
struct fio_client *client;
+ dprint(FD_NET, "client: terminate clients\n");
+
flist_for_each(entry, &client_list) {
client = flist_entry(entry, struct fio_client, list);
static void sig_int(int sig)
{
+ dprint(FD_NET, "client: got sign %d\n", sig);
fio_clients_terminate();
}
static void probe_client(struct fio_client *client)
{
+ dprint(FD_NET, "client: send probe\n");
+
fio_net_send_simple_cmd(client->fd, FIO_NET_CMD_PROBE, 0);
handle_client(client, 1);
}
struct cmd_line_pdu *pdu;
int i, ret;
+ dprint(FD_NET, "client: send cmdline\n");
+
pdu = malloc(sizeof(*pdu));
for (i = 0; i < client->argc; i++)
strcpy((char *) pdu->argv[i], client->argv[i]);
struct flist_head *entry, *tmp;
int ret;
+ dprint(FD_NET, "client: connect all\n");
+
client_signal_handler();
flist_for_each_safe(entry, tmp, &client_list) {
struct fio_net_cmd *cmd;
int done = 0;
+ dprint(FD_NET, "client: handle %s\n", client->hostname);
+
while ((cmd = fio_net_recv_cmd(client->fd, 1)) != NULL) {
dprint(FD_NET, "%s: got cmd op %d\n", client->hostname,
cmd->opcode);
free(cmd);
done = 1;
break;
- case FIO_NET_CMD_TEXT:
- fprintf(f_out, "Client <%s>: ", client->hostname);
- fwrite(cmd->payload, cmd->pdu_len, 1, f_out);
+ case FIO_NET_CMD_TEXT: {
+ const char *buf = (const char *) cmd->payload;
+
+ if (!client->skip_newline)
+ fprintf(f_out, "Client <%s>: ", client->hostname);
+ fwrite(buf, cmd->pdu_len, 1, f_out);
fflush(f_out);
+ client->skip_newline = strchr(buf, '\n') == NULL;
free(cmd);
break;
+ }
case FIO_NET_CMD_TS:
handle_ts(cmd);
free(cmd);