diff options
author | dimitri staessens <[email protected]> | 2017-03-29 02:12:40 +0200 |
---|---|---|
committer | dimitri staessens <[email protected]> | 2017-03-29 02:12:40 +0200 |
commit | b09a2719a7820cef58a251ccb2ce286754114a0a (patch) | |
tree | e37cdffce783b846311df03d34df994a946f8597 /src/lib/cdap_req.h | |
parent | b8ad2438385f7c60630d38524ad0c4c13b53b80a (diff) | |
download | ouroboros-b09a2719a7820cef58a251ccb2ce286754114a0a.tar.gz ouroboros-b09a2719a7820cef58a251ccb2ce286754114a0a.zip |
lib: Revise handling CDAP messages
Fixes a number of issues in CDAP.
CDAP keeps track if a message is being processed, and moves it to the
end of the request list if it is. It will now correctly wait for new
messages.
The invoke_ids are generated locally per CDAP instance, invoke_ids
can't be used to track incoming requests, we need to keep track of the
fd. The keys are now identifiers (taken from the same local pool as the
invoke_ids) that are used to track requests.
Diffstat (limited to 'src/lib/cdap_req.h')
-rw-r--r-- | src/lib/cdap_req.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/lib/cdap_req.h b/src/lib/cdap_req.h index fe8e3613..592d26a0 100644 --- a/src/lib/cdap_req.h +++ b/src/lib/cdap_req.h @@ -31,6 +31,8 @@ #include <pthread.h> +typedef cdap_key_t invoke_id_t; + enum creq_state { REQ_NULL = 0, REQ_INIT, @@ -46,6 +48,7 @@ struct cdap_req { int fd; struct timespec birth; cdap_key_t key; + invoke_id_t iid; int response; buffer_t data; @@ -55,8 +58,9 @@ struct cdap_req { pthread_mutex_t lock; }; -struct cdap_req * cdap_req_create(int fd, - cdap_key_t key); +struct cdap_req * cdap_req_create(int fd, + cdap_key_t key, + invoke_id_t iid); void cdap_req_destroy(struct cdap_req * creq); |