diff options
author | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-08-03 13:25:12 +0200 |
---|---|---|
committer | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2016-08-03 13:25:12 +0200 |
commit | 44b55f0b03ffc6aff4f1c290b5687d5ac95ddbf9 (patch) | |
tree | 6e80ca15368a75908ba4053ceb07c25269ae786c /src/lib/dev.c | |
parent | d409fd569683d8f0e8c8f65d4820087dbf7c0786 (diff) | |
parent | ca494922f3815077efbcd28da3748df38c8a6961 (diff) | |
download | ouroboros-44b55f0b03ffc6aff4f1c290b5687d5ac95ddbf9.tar.gz ouroboros-44b55f0b03ffc6aff4f1c290b5687d5ac95ddbf9.zip |
Merged in dstaesse/ouroboros/be-select (pull request #184)
select() like call
Diffstat (limited to 'src/lib/dev.c')
-rw-r--r-- | src/lib/dev.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/lib/dev.c b/src/lib/dev.c index f13c8423..22e77169 100644 --- a/src/lib/dev.c +++ b/src/lib/dev.c @@ -130,17 +130,14 @@ void ap_fini(void) free(_ap_instance); } -#if 0 static int port_id_to_fd(int port_id) { int i; for (i = 0; i < AP_MAX_FLOWS; ++i) - if (_ap_instance->flows[i].port_id == port_id - && _ap_instance->flows[i].state != FLOW_NULL) + if (_ap_instance->flows[i].port_id == port_id) return i; return -1; } -#endif int flow_accept(char ** ae_name) { @@ -523,6 +520,14 @@ ssize_t flow_write(int fd, void * buf, size_t count) return 0; } +int flow_select(const struct timespec * timeout) +{ + int port_id = shm_ap_rbuff_peek(_ap_instance->rb, timeout); + if (port_id < 0) + return port_id; + return port_id_to_fd(port_id); +} + ssize_t flow_read(int fd, void * buf, size_t count) { int idx = -1; |