mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-11-11 03:57:14 +00:00
FS-9775: Add sharelock api for dht nodes
This commit is contained in:
1 parent
64a44ed3a5
commit
59608400d1
3 files changed
+109
-16
No files matched your search
@@ -443,6 +443,7 @@ KS_DECLARE(ks_status_t) ks_dhtrt_expire_node(ks_dhtrt_routetable_t* table
|
||||
KS_DECLARE(uint8_t) ks_dhtrt_findclosest_nodes(ks_dhtrt_routetable_t* table, ks_dhtrt_querynodes_t* query);
|
||||
KS_DECLARE(ks_dht_node_t*) ks_dhtrt_find_node(ks_dhtrt_routetable_t* table, ks_dht_nodeid_t id);
|
||||
|
||||
KS_DECLARE(ks_status_t) ks_dhtrt_sharelock_node(ks_dht_node_t* node);
|
||||
KS_DECLARE(ks_status_t) ks_dhtrt_release_node(ks_dht_node_t* node);
|
||||
KS_DECLARE(ks_status_t) ks_dhtrt_release_querynodes(ks_dhtrt_querynodes_t* query);
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
#define KS_DHTRT_MAXPING 3
|
||||
#define KS_DHTRT_PROCESSTABLE_INTERVAL (5*60)
|
||||
#define KS_DHTRT_PROCESSTABLE_SHORTINTERVAL (120)
|
||||
#define KS_DHTRT_RECYCLE_NODE_THRESHOLD 100
|
||||
#define KS_DHTRT_RECYCLE_NODE_THRESHOLD 0
|
||||
|
||||
/* peer flags */
|
||||
#define DHTPEER_DUBIOUS 0
|
||||
@@ -795,6 +795,11 @@ KS_DECLARE(ks_status_t) ks_dhtrt_release_node(ks_dht_node_t* node)
|
||||
return ks_rwl_read_unlock(node->reflock);
|
||||
}
|
||||
|
||||
KS_DECLARE(ks_status_t) ks_dhtrt_sharelock_node(ks_dht_node_t* node)
|
||||
{
|
||||
return ks_rwl_read_lock(node->reflock);
|
||||
}
|
||||
|
||||
KS_DECLARE(ks_status_t) ks_dhtrt_release_querynodes(ks_dhtrt_querynodes_t *query)
|
||||
{
|
||||
for(int ix=0; ix<query->count; ++ix) {
|
||||
@@ -959,10 +964,12 @@ void ks_dhtrt_process_deleted(ks_dhtrt_routetable_t *table)
|
||||
|
||||
|
||||
/* reclaim excess memory */
|
||||
printf("%d %d %p\n", internal->deleted_count, KS_DHTRT_RECYCLE_NODE_THRESHOLD, (void*)deleted); fflush(stdout);
|
||||
|
||||
while(internal->deleted_count > KS_DHTRT_RECYCLE_NODE_THRESHOLD && deleted) {
|
||||
ks_dht_node_t* node = deleted->node;
|
||||
|
||||
#ifdef KS_DHT_DEBUGPRINTFX__
|
||||
#ifdef KS_DHT_DEBUGPRINTF_
|
||||
ks_log(KS_LOG_DEBUG, "ALLOC process_deleted entry: try write lock\n");
|
||||
#endif
|
||||
|
||||
@@ -973,7 +980,7 @@ void ks_dhtrt_process_deleted(ks_dhtrt_routetable_t *table)
|
||||
deleted = deleted->next;
|
||||
ks_pool_free(table->pool, &temp);
|
||||
--internal->deleted_count;
|
||||
#ifdef KS_DHT_DEBUGPRINTFX_
|
||||
#ifdef KS_DHT_DEBUGPRINTF_
|
||||
ks_log(KS_LOG_DEBUG, "ALLOC process_deleted: internal->deleted_count %d\n", internal->deleted_count);
|
||||
#endif
|
||||
if (prev != NULL) {
|
||||
@@ -985,7 +992,7 @@ void ks_dhtrt_process_deleted(ks_dhtrt_routetable_t *table)
|
||||
|
||||
}
|
||||
else {
|
||||
#ifdef KS_DHT_DEBUGPRINTFX__
|
||||
#ifdef KS_DHT_DEBUGPRINTF_
|
||||
ks_log(KS_LOG_DEBUG, "ALLOC process_deleted entry: try write lock failed\n");
|
||||
#endif
|
||||
prev = deleted;
|
||||
|
||||
Reference in new issue
Block a user