34 #include <boost/unordered_map.hpp>
35 #include <graphlab/rpc/delta_dht.hpp>
38 #include <graphlab/macros_def.hpp>
40 namespace delta_dht_impl {
42 typedef boost::unordered_map<const void*, icache*> cache_map_type;
45 cache_map_type* cache_map_ptr =
static_cast<cache_map_type*
>(ptr);
46 if(cache_map_ptr != NULL) {
47 cache_map_type& cache_map = *cache_map_ptr;
48 typedef cache_map_type::value_type pair_type;
49 foreach(pair_type& pair, cache_map) {
50 if(pair.second != NULL) {
58 struct tls_key_creator {
59 pthread_key_t TLS_KEY;
60 tls_key_creator() : TLS_KEY(0) {
64 const tls_key_creator key;
66 icache*& get_icache_ptr(
const void* dht_ptr) {
67 cache_map_type* cache_map_ptr =
static_cast<cache_map_type*
>
68 (pthread_getspecific(key.TLS_KEY));
69 if(cache_map_ptr == NULL) {
70 cache_map_ptr =
new cache_map_type();
71 pthread_setspecific(key.TLS_KEY, cache_map_ptr);
73 ASSERT_NE(cache_map_ptr, NULL);
74 ASSERT_NE(dht_ptr, NULL);
75 return (*cache_map_ptr)[dht_ptr];