2016-12-02 19:57:45 +00:00
|
|
|
#include "ks_dht.h"
|
|
|
|
#include "ks_dht-int.h"
|
|
|
|
|
2016-12-15 05:27:54 +00:00
|
|
|
KS_DECLARE(ks_status_t) ks_dht_transaction_create(ks_dht_transaction_t **transaction,
|
|
|
|
ks_pool_t *pool,
|
|
|
|
ks_sockaddr_t *raddr,
|
|
|
|
uint32_t transactionid,
|
|
|
|
ks_dht_message_callback_t callback)
|
2016-12-02 19:57:45 +00:00
|
|
|
{
|
2016-12-15 05:27:54 +00:00
|
|
|
ks_dht_transaction_t *t;
|
|
|
|
ks_status_t ret = KS_STATUS_SUCCESS;
|
2016-12-02 19:57:45 +00:00
|
|
|
|
|
|
|
ks_assert(transaction);
|
|
|
|
ks_assert(pool);
|
2016-12-15 05:27:54 +00:00
|
|
|
ks_assert(raddr);
|
2016-12-10 07:36:57 +00:00
|
|
|
|
2016-12-15 05:27:54 +00:00
|
|
|
*transaction = t = ks_pool_alloc(pool, sizeof(ks_dht_transaction_t));
|
|
|
|
if (!t) {
|
|
|
|
ret = KS_STATUS_NO_MEM;
|
|
|
|
goto done;
|
|
|
|
}
|
|
|
|
t->pool = pool;
|
|
|
|
|
|
|
|
t->raddr = *raddr;
|
|
|
|
t->transactionid = transactionid;
|
|
|
|
t->callback = callback;
|
|
|
|
t->expiration = ks_time_now_sec() + KS_DHT_TRANSACTION_EXPIRATION_DELAY;
|
|
|
|
|
|
|
|
done:
|
|
|
|
if (ret != KS_STATUS_SUCCESS) {
|
|
|
|
if (t) ks_dht_transaction_destroy(&t);
|
|
|
|
*transaction = NULL;
|
|
|
|
}
|
|
|
|
return ret;
|
2016-12-02 19:57:45 +00:00
|
|
|
}
|
|
|
|
|
2016-12-15 05:27:54 +00:00
|
|
|
KS_DECLARE(void) ks_dht_transaction_destroy(ks_dht_transaction_t **transaction)
|
2016-12-02 19:57:45 +00:00
|
|
|
{
|
2016-12-15 05:27:54 +00:00
|
|
|
ks_dht_transaction_t *t;
|
2016-12-02 19:57:45 +00:00
|
|
|
|
|
|
|
ks_assert(transaction);
|
2016-12-10 07:36:57 +00:00
|
|
|
ks_assert(*transaction);
|
|
|
|
|
2016-12-15 05:27:54 +00:00
|
|
|
t = *transaction;
|
2016-12-02 19:57:45 +00:00
|
|
|
|
2016-12-15 05:27:54 +00:00
|
|
|
ks_pool_free(t->pool, t);
|
2016-12-02 19:57:45 +00:00
|
|
|
|
2016-12-15 05:27:54 +00:00
|
|
|
*transaction = NULL;
|
2016-12-02 19:57:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* For Emacs:
|
|
|
|
* Local Variables:
|
|
|
|
* mode:c
|
|
|
|
* indent-tabs-mode:t
|
|
|
|
* tab-width:4
|
|
|
|
* c-basic-offset:4
|
|
|
|
* End:
|
|
|
|
* For VIM:
|
|
|
|
* vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet:
|
|
|
|
*/
|