add write function to netsource

this is useful for listening sockets to also send responses,
i.e. implement bi-directional communication
This commit is contained in:
Andre Puschmann 2019-09-13 15:29:49 +02:00
parent 4ac5448ad7
commit 4869509c7b
2 changed files with 18 additions and 0 deletions

View File

@ -67,6 +67,8 @@ SRSLTE_API int srslte_netsource_read(srslte_netsource_t *q,
void *buffer,
int nof_bytes);
SRSLTE_API int srslte_netsource_write(srslte_netsource_t* q, void* buffer, int nbytes);
SRSLTE_API int srslte_netsource_set_timeout(srslte_netsource_t *q,
uint32_t microseconds);

View File

@ -111,6 +111,22 @@ int srslte_netsource_read(srslte_netsource_t *q, void *buffer, int nbytes) {
}
}
int srslte_netsource_write(srslte_netsource_t* q, void* buffer, int nbytes)
{
// Loop until all bytes are sent
char* ptr = (char*)buffer;
while (nbytes > 0) {
ssize_t i = send(q->connfd, ptr, nbytes, 0);
if (i < 1) {
perror("Error calling send()\n");
return SRSLTE_ERROR;
}
ptr += i;
nbytes -= i;
}
return SRSLTE_SUCCESS;
}
int srslte_netsource_set_nonblocking(srslte_netsource_t *q) {
if (fcntl(q->sockfd, F_SETFL, O_NONBLOCK)) {
perror("fcntl");