static int ft_bw(void) { int ret, i; if (listen_sock < 0) { for (i = 0; i < ft_ctrl.xfer_iter; i++) { ret = ft_send_msg(); if (ret) return ret; } ret = ft_recv_msg(); if (ret) return ret; } else { for (i = 0; i < ft_ctrl.xfer_iter; i += ft_rx_ctrl.credits) { ret = ft_post_recv_bufs(); if (ret) return ret; ret = ft_comp_rx(0); if (ret) return ret; } ret = ft_send_msg(); if (ret) return ret; } return 0; }
static int ft_pingpong(void) { int ret, i; // TODO: current flow will not handle manual progress mode // it can get stuck with both sides receiving if (listen_sock < 0) { for (i = 0; i < ft_ctrl.xfer_iter; i++) { ret = ft_send_msg(); if (ret) return ret; ret = ft_recv_msg(); if (ret) return ret; } } else { for (i = 0; i < ft_ctrl.xfer_iter; i++) { ret = ft_recv_msg(); if (ret) return ret; ret = ft_send_msg(); if (ret) return ret; } } return 0; }
int ft_time(t_client *client, int cli, char **args, int *number) { time_t t; (void)args; (void)number; (void)client; t = time(&t); ft_send_msg(cli, INFO, ctime(&t)); return (1); }
int ft_nick(t_client *client, int cli, char **args, int *number) { char *name; char *msg; msg = NULL; name = args[0]; if (name == NULL || name[0] == '/') msg = ft_strdup("One argument expected"); else if (check_no_repeat(client, cli, name, number)) msg = ft_strdup("Nickname already used"); else if (ft_strlen(name) > 9) msg = ft_strdup("Nickname too long"); if (msg) { ft_send_msg(cli, ERRORS, msg); free(msg); return (0); } msg = ft_strdup("Nickname has been create"); ft_strncpy(g_base->client[cli].name, name, 9); free(msg); return (1); }