jcat: get status for all queued messages
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>pull/144/head
parent
0e542c8dba
commit
c4e68aff78
17
jcat.c
17
jcat.c
|
|
@ -49,6 +49,7 @@ struct jcat_priv {
|
||||||
int outfile;
|
int outfile;
|
||||||
size_t max_transfer;
|
size_t max_transfer;
|
||||||
unsigned long repeat;
|
unsigned long repeat;
|
||||||
|
unsigned long round;
|
||||||
int todo_prio;
|
int todo_prio;
|
||||||
|
|
||||||
bool valid_peername;
|
bool valid_peername;
|
||||||
|
|
@ -296,7 +297,8 @@ static int jcat_recv_err(struct jcat_priv *priv)
|
||||||
static int jcat_send_loop(struct jcat_priv *priv, int out_fd, char *buf,
|
static int jcat_send_loop(struct jcat_priv *priv, int out_fd, char *buf,
|
||||||
size_t buf_size)
|
size_t buf_size)
|
||||||
{
|
{
|
||||||
ssize_t count, num_sent = 0;
|
struct jcat_stats *stats = &priv->stats;
|
||||||
|
ssize_t count;
|
||||||
char *tmp_buf = buf;
|
char *tmp_buf = buf;
|
||||||
unsigned int events = POLLOUT | POLLERR;
|
unsigned int events = POLLOUT | POLLERR;
|
||||||
bool tx_done = false;
|
bool tx_done = false;
|
||||||
|
|
@ -304,6 +306,8 @@ static int jcat_send_loop(struct jcat_priv *priv, int out_fd, char *buf,
|
||||||
count = buf_size;
|
count = buf_size;
|
||||||
|
|
||||||
while (!tx_done) {
|
while (!tx_done) {
|
||||||
|
ssize_t num_sent = 0;
|
||||||
|
|
||||||
if (priv->polltimeout) {
|
if (priv->polltimeout) {
|
||||||
struct pollfd fds = {
|
struct pollfd fds = {
|
||||||
.fd = priv->sock,
|
.fd = priv->sock,
|
||||||
|
|
@ -330,7 +334,7 @@ static int jcat_send_loop(struct jcat_priv *priv, int out_fd, char *buf,
|
||||||
continue;
|
continue;
|
||||||
else if (ret)
|
else if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
else
|
else if ((priv->repeat - 1) == stats->tskey)
|
||||||
tx_done = true;
|
tx_done = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -353,8 +357,12 @@ static int jcat_send_loop(struct jcat_priv *priv, int out_fd, char *buf,
|
||||||
__func__);
|
__func__);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
if (!count)
|
if (!count) {
|
||||||
events = POLLERR;
|
if (priv->repeat == priv->round)
|
||||||
|
events = POLLERR;
|
||||||
|
else
|
||||||
|
tx_done = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -456,6 +464,7 @@ static int jcat_send(struct jcat_priv *priv)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
for (i = 0; i < priv->repeat; i++) {
|
for (i = 0; i < priv->repeat; i++) {
|
||||||
|
priv->round++;
|
||||||
ret = jcat_sendfile(priv, priv->sock, priv->infile, NULL, size);
|
ret = jcat_sendfile(priv, priv->sock, priv->infile, NULL, size);
|
||||||
if (ret)
|
if (ret)
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue