summaryrefslogtreecommitdiff
path: root/src/maps/shashmap.tmpl
blob: 7cf4b6b946c8d5d09368dc597cbd58403d49b46e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
template<class obj_type>
shashmap<obj_type>::shashmap()
{
  pthread_mutex_init( &mut_shashmap, NULL );
}

template<class obj_type>
shashmap<obj_type>::~shashmap()
{
  pthread_mutex_destroy( &mut_shashmap );
}

template<class obj_type>
void
shashmap<obj_type>::add_elem(obj_type t_obj, string s_key)
{
  pthread_mutex_lock( &mut_shashmap );
  (*this)[s_key] = t_obj;
  pthread_mutex_unlock( &mut_shashmap );
}

template<class obj_type>
void
shashmap<obj_type>::add_elem_insecure(obj_type t_obj, string s_key)
{
  (*this)[s_key] = t_obj;
}

template<class obj_type>
obj_type
shashmap<obj_type>::get_set_elem(obj_type t_obj, string s_key)
{
  pthread_mutex_lock( &mut_shashmap );
  obj_type t_ret = hashmap<obj_type>::get_set_elem(t_obj, s_key);
  pthread_mutex_unlock( &mut_shashmap );
  return t_ret;
}

template<class obj_type>
void
shashmap<obj_type>::set_elem(obj_type t_obj, string s_key)
{
  pthread_mutex_lock( &mut_shashmap );
  (*this)[s_key] = t_obj;
  pthread_mutex_unlock( &mut_shashmap );
}

template<class obj_type>
obj_type
shashmap<obj_type>::get_elem(string s_key)
{
  pthread_mutex_lock( &mut_shashmap );
  obj_type t_ret = hashmap<obj_type>::get_elem(s_key);
  pthread_mutex_unlock( &mut_shashmap );
  return t_ret;
}

template<class obj_type>
void
shashmap<obj_type>::del_elem(string s_key)
{
  pthread_mutex_lock( &mut_shashmap );
  hashmap<obj_type>::erase(s_key);
  pthread_mutex_unlock( &mut_shashmap );
}

template<class obj_type>
void
shashmap<obj_type>::del_elem_insecure(string s_key)
{
  hashmap<obj_type>::erase(s_key);
}

template<class obj_type>
vector<string>*
shashmap<obj_type>::get_key_vector()
{
  pthread_mutex_lock( &mut_shashmap );
  vector<string>* p_vec = hashmap<obj_type>::get_key_vector();
  pthread_mutex_unlock( &mut_shashmap );
  return p_vec;
}

template<class obj_type>
void
shashmap<obj_type>::clear()
{
  pthread_mutex_lock( &mut_shashmap );
  hashmap<obj_type>::clear();
  pthread_mutex_unlock( &mut_shashmap );
}

template<class obj_type>
int
shashmap<obj_type>::size()
{
  pthread_mutex_lock( &mut_shashmap );
  int i_size = hashmap<obj_type>::size();
  pthread_mutex_unlock( &mut_shashmap );
  return i_size;
}

template<class obj_type>
bool
shashmap<obj_type>::exists(string s_key)
{
  pthread_mutex_lock( &mut_shashmap );
  bool b_ret = hashmap<obj_type>::exists(s_key);
  pthread_mutex_unlock( &mut_shashmap );
  return b_ret;
}

template<class obj_type>
void
shashmap<obj_type>::run_func( void (*func)(obj_type) )
{
  pthread_mutex_lock( &mut_shashmap );
  hashmap<obj_type>::run_func(func);
  pthread_mutex_unlock( &mut_shashmap );
}

template<class obj_type>
void
shashmap<obj_type>::run_func( void (*func)(obj_type, void*), void* v_arg )
{
  pthread_mutex_lock( &mut_shashmap );
  hashmap<obj_type>::run_func(func, v_arg);
  pthread_mutex_unlock( &mut_shashmap );
}