boourns-memcached 1.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (542) hide show
  1. data/BENCHMARKS +128 -0
  2. data/CHANGELOG +158 -0
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +41 -0
  5. data/LICENSE +184 -0
  6. data/Manifest +243 -0
  7. data/README.rdoc +124 -0
  8. data/Rakefile +118 -0
  9. data/TODO +4 -0
  10. data/ext/Makefile +213 -0
  11. data/ext/Makefile.in +213 -0
  12. data/ext/bin/memcat +0 -0
  13. data/ext/bin/memcp +0 -0
  14. data/ext/bin/memdump +0 -0
  15. data/ext/bin/memerror +0 -0
  16. data/ext/bin/memflush +0 -0
  17. data/ext/bin/memrm +0 -0
  18. data/ext/bin/memslap +0 -0
  19. data/ext/bin/memstat +0 -0
  20. data/ext/extconf-make.rb +25 -0
  21. data/ext/extconf.rb +87 -0
  22. data/ext/include/libmemcached/memcached.h +304 -0
  23. data/ext/include/libmemcached/memcached.hpp +799 -0
  24. data/ext/include/libmemcached/memcached_configure.h +23 -0
  25. data/ext/include/libmemcached/memcached_constants.h +145 -0
  26. data/ext/include/libmemcached/memcached_exist.h +20 -0
  27. data/ext/include/libmemcached/memcached_get.h +87 -0
  28. data/ext/include/libmemcached/memcached_result.h +59 -0
  29. data/ext/include/libmemcached/memcached_sasl.h +44 -0
  30. data/ext/include/libmemcached/memcached_server.h +93 -0
  31. data/ext/include/libmemcached/memcached_storage.h +107 -0
  32. data/ext/include/libmemcached/memcached_string.h +53 -0
  33. data/ext/include/libmemcached/memcached_touch.h +31 -0
  34. data/ext/include/libmemcached/memcached_types.h +44 -0
  35. data/ext/include/libmemcached/memcached_watchpoint.h +38 -0
  36. data/ext/include/libmemcached/visibility.h +51 -0
  37. data/ext/lib/libmemcached.a +0 -0
  38. data/ext/lib/libmemcached.la +41 -0
  39. data/ext/lib/libmemcached_gem.a +0 -0
  40. data/ext/lib/libmemcached_gem.la +41 -0
  41. data/ext/lib/pkgconfig/libmemcached.pc +10 -0
  42. data/ext/libmemcached-0.32/AUTHORS +7 -0
  43. data/ext/libmemcached-0.32/COPYING +32 -0
  44. data/ext/libmemcached-0.32/ChangeLog +303 -0
  45. data/ext/libmemcached-0.32/INSTALL +302 -0
  46. data/ext/libmemcached-0.32/Makefile +831 -0
  47. data/ext/libmemcached-0.32/Makefile.am +36 -0
  48. data/ext/libmemcached-0.32/Makefile.in +831 -0
  49. data/ext/libmemcached-0.32/NEWS +1 -0
  50. data/ext/libmemcached-0.32/README +33 -0
  51. data/ext/libmemcached-0.32/THANKS +14 -0
  52. data/ext/libmemcached-0.32/TODO +11 -0
  53. data/ext/libmemcached-0.32/aclocal.m4 +1917 -0
  54. data/ext/libmemcached-0.32/clients/Makefile +773 -0
  55. data/ext/libmemcached-0.32/clients/Makefile.am +80 -0
  56. data/ext/libmemcached-0.32/clients/Makefile.in +773 -0
  57. data/ext/libmemcached-0.32/clients/client_options.h +32 -0
  58. data/ext/libmemcached-0.32/clients/execute.c +64 -0
  59. data/ext/libmemcached-0.32/clients/execute.h +5 -0
  60. data/ext/libmemcached-0.32/clients/execute.lo +12 -0
  61. data/ext/libmemcached-0.32/clients/execute.o +0 -0
  62. data/ext/libmemcached-0.32/clients/generator.c +74 -0
  63. data/ext/libmemcached-0.32/clients/generator.h +20 -0
  64. data/ext/libmemcached-0.32/clients/generator.lo +12 -0
  65. data/ext/libmemcached-0.32/clients/generator.o +0 -0
  66. data/ext/libmemcached-0.32/clients/libgenexec.la +41 -0
  67. data/ext/libmemcached-0.32/clients/libutilities.la +41 -0
  68. data/ext/libmemcached-0.32/clients/memcat +0 -0
  69. data/ext/libmemcached-0.32/clients/memcat.c +178 -0
  70. data/ext/libmemcached-0.32/clients/memcat.o +0 -0
  71. data/ext/libmemcached-0.32/clients/memcp +0 -0
  72. data/ext/libmemcached-0.32/clients/memcp.c +251 -0
  73. data/ext/libmemcached-0.32/clients/memcp.o +0 -0
  74. data/ext/libmemcached-0.32/clients/memdump +0 -0
  75. data/ext/libmemcached-0.32/clients/memdump.c +170 -0
  76. data/ext/libmemcached-0.32/clients/memdump.o +0 -0
  77. data/ext/libmemcached-0.32/clients/memerror +0 -0
  78. data/ext/libmemcached-0.32/clients/memerror.c +80 -0
  79. data/ext/libmemcached-0.32/clients/memerror.o +0 -0
  80. data/ext/libmemcached-0.32/clients/memflush +0 -0
  81. data/ext/libmemcached-0.32/clients/memflush.c +143 -0
  82. data/ext/libmemcached-0.32/clients/memflush.o +0 -0
  83. data/ext/libmemcached-0.32/clients/memrm +0 -0
  84. data/ext/libmemcached-0.32/clients/memrm.c +160 -0
  85. data/ext/libmemcached-0.32/clients/memrm.o +0 -0
  86. data/ext/libmemcached-0.32/clients/memslap +0 -0
  87. data/ext/libmemcached-0.32/clients/memslap-memslap.o +0 -0
  88. data/ext/libmemcached-0.32/clients/memslap.c +441 -0
  89. data/ext/libmemcached-0.32/clients/memstat +0 -0
  90. data/ext/libmemcached-0.32/clients/memstat.c +326 -0
  91. data/ext/libmemcached-0.32/clients/memstat.o +0 -0
  92. data/ext/libmemcached-0.32/clients/utilities.c +207 -0
  93. data/ext/libmemcached-0.32/clients/utilities.h +41 -0
  94. data/ext/libmemcached-0.32/clients/utilities.lo +12 -0
  95. data/ext/libmemcached-0.32/clients/utilities.o +0 -0
  96. data/ext/libmemcached-0.32/config.h +253 -0
  97. data/ext/libmemcached-0.32/config.h.in +252 -0
  98. data/ext/libmemcached-0.32/config.log +2440 -0
  99. data/ext/libmemcached-0.32/config.status +2384 -0
  100. data/ext/libmemcached-0.32/config/compile +143 -0
  101. data/ext/libmemcached-0.32/config/config.guess +1561 -0
  102. data/ext/libmemcached-0.32/config/config.rpath +666 -0
  103. data/ext/libmemcached-0.32/config/config.sub +1686 -0
  104. data/ext/libmemcached-0.32/config/depcomp +630 -0
  105. data/ext/libmemcached-0.32/config/install-sh +520 -0
  106. data/ext/libmemcached-0.32/config/ltmain.sh +9636 -0
  107. data/ext/libmemcached-0.32/config/missing +376 -0
  108. data/ext/libmemcached-0.32/configure +23825 -0
  109. data/ext/libmemcached-0.32/configure.ac +122 -0
  110. data/ext/libmemcached-0.32/docs/Makefile +920 -0
  111. data/ext/libmemcached-0.32/docs/Makefile.am +415 -0
  112. data/ext/libmemcached-0.32/docs/Makefile.in +920 -0
  113. data/ext/libmemcached-0.32/docs/libmemcached.3 +229 -0
  114. data/ext/libmemcached-0.32/docs/libmemcached.pod +123 -0
  115. data/ext/libmemcached-0.32/docs/libmemcached_examples.3 +242 -0
  116. data/ext/libmemcached-0.32/docs/libmemcached_examples.pod +115 -0
  117. data/ext/libmemcached-0.32/docs/libmemcachedutil.pod +40 -0
  118. data/ext/libmemcached-0.32/docs/memcached_add.3 +308 -0
  119. data/ext/libmemcached-0.32/docs/memcached_add_by_key.3 +308 -0
  120. data/ext/libmemcached-0.32/docs/memcached_analyze.3 +175 -0
  121. data/ext/libmemcached-0.32/docs/memcached_analyze.pod +52 -0
  122. data/ext/libmemcached-0.32/docs/memcached_append.3 +308 -0
  123. data/ext/libmemcached-0.32/docs/memcached_append_by_key.3 +308 -0
  124. data/ext/libmemcached-0.32/docs/memcached_auto.pod +97 -0
  125. data/ext/libmemcached-0.32/docs/memcached_behavior.pod +224 -0
  126. data/ext/libmemcached-0.32/docs/memcached_behavior_get.3 +317 -0
  127. data/ext/libmemcached-0.32/docs/memcached_behavior_set.3 +317 -0
  128. data/ext/libmemcached-0.32/docs/memcached_callback.pod +123 -0
  129. data/ext/libmemcached-0.32/docs/memcached_callback_get.3 +231 -0
  130. data/ext/libmemcached-0.32/docs/memcached_callback_set.3 +231 -0
  131. data/ext/libmemcached-0.32/docs/memcached_cas.3 +308 -0
  132. data/ext/libmemcached-0.32/docs/memcached_cas_by_key.3 +308 -0
  133. data/ext/libmemcached-0.32/docs/memcached_clone.3 +183 -0
  134. data/ext/libmemcached-0.32/docs/memcached_create.3 +183 -0
  135. data/ext/libmemcached-0.32/docs/memcached_create.pod +61 -0
  136. data/ext/libmemcached-0.32/docs/memcached_decrement.3 +219 -0
  137. data/ext/libmemcached-0.32/docs/memcached_decrement_with_initial.3 +219 -0
  138. data/ext/libmemcached-0.32/docs/memcached_delete.3 +176 -0
  139. data/ext/libmemcached-0.32/docs/memcached_delete.pod +54 -0
  140. data/ext/libmemcached-0.32/docs/memcached_delete_by_key.3 +176 -0
  141. data/ext/libmemcached-0.32/docs/memcached_destroy_sasl_auth_data.3 +184 -0
  142. data/ext/libmemcached-0.32/docs/memcached_dump.3 +175 -0
  143. data/ext/libmemcached-0.32/docs/memcached_dump.pod +53 -0
  144. data/ext/libmemcached-0.32/docs/memcached_fetch.3 +283 -0
  145. data/ext/libmemcached-0.32/docs/memcached_fetch_execute.3 +283 -0
  146. data/ext/libmemcached-0.32/docs/memcached_fetch_result.3 +283 -0
  147. data/ext/libmemcached-0.32/docs/memcached_flush.pod +46 -0
  148. data/ext/libmemcached-0.32/docs/memcached_flush_buffers.3 +164 -0
  149. data/ext/libmemcached-0.32/docs/memcached_flush_buffers.pod +42 -0
  150. data/ext/libmemcached-0.32/docs/memcached_free.3 +183 -0
  151. data/ext/libmemcached-0.32/docs/memcached_generate_hash_value.3 +179 -0
  152. data/ext/libmemcached-0.32/docs/memcached_generate_hash_value.pod +57 -0
  153. data/ext/libmemcached-0.32/docs/memcached_get.3 +283 -0
  154. data/ext/libmemcached-0.32/docs/memcached_get.pod +161 -0
  155. data/ext/libmemcached-0.32/docs/memcached_get_by_key.3 +283 -0
  156. data/ext/libmemcached-0.32/docs/memcached_get_memory_allocators.3 +194 -0
  157. data/ext/libmemcached-0.32/docs/memcached_get_sasl_callbacks.3 +184 -0
  158. data/ext/libmemcached-0.32/docs/memcached_get_user_data.3 +171 -0
  159. data/ext/libmemcached-0.32/docs/memcached_increment.3 +219 -0
  160. data/ext/libmemcached-0.32/docs/memcached_increment_with_initial.3 +219 -0
  161. data/ext/libmemcached-0.32/docs/memcached_lib_version.3 +176 -0
  162. data/ext/libmemcached-0.32/docs/memcached_memory_allocators.pod +73 -0
  163. data/ext/libmemcached-0.32/docs/memcached_mget.3 +283 -0
  164. data/ext/libmemcached-0.32/docs/memcached_mget_by_key.3 +283 -0
  165. data/ext/libmemcached-0.32/docs/memcached_pool.pod +77 -0
  166. data/ext/libmemcached-0.32/docs/memcached_prepend.3 +308 -0
  167. data/ext/libmemcached-0.32/docs/memcached_prepend_by_key.3 +308 -0
  168. data/ext/libmemcached-0.32/docs/memcached_quit.3 +169 -0
  169. data/ext/libmemcached-0.32/docs/memcached_quit.pod +47 -0
  170. data/ext/libmemcached-0.32/docs/memcached_replace.3 +308 -0
  171. data/ext/libmemcached-0.32/docs/memcached_replace_by_key.3 +308 -0
  172. data/ext/libmemcached-0.32/docs/memcached_sasl.pod +63 -0
  173. data/ext/libmemcached-0.32/docs/memcached_server_add.3 +224 -0
  174. data/ext/libmemcached-0.32/docs/memcached_server_count.3 +224 -0
  175. data/ext/libmemcached-0.32/docs/memcached_server_list.3 +224 -0
  176. data/ext/libmemcached-0.32/docs/memcached_server_list_append.3 +196 -0
  177. data/ext/libmemcached-0.32/docs/memcached_server_list_count.3 +196 -0
  178. data/ext/libmemcached-0.32/docs/memcached_server_list_free.3 +196 -0
  179. data/ext/libmemcached-0.32/docs/memcached_server_push.3 +224 -0
  180. data/ext/libmemcached-0.32/docs/memcached_server_st.pod +75 -0
  181. data/ext/libmemcached-0.32/docs/memcached_servers.pod +102 -0
  182. data/ext/libmemcached-0.32/docs/memcached_servers_parse.3 +196 -0
  183. data/ext/libmemcached-0.32/docs/memcached_set.3 +308 -0
  184. data/ext/libmemcached-0.32/docs/memcached_set.pod +187 -0
  185. data/ext/libmemcached-0.32/docs/memcached_set_by_key.3 +308 -0
  186. data/ext/libmemcached-0.32/docs/memcached_set_memory_allocators.3 +194 -0
  187. data/ext/libmemcached-0.32/docs/memcached_set_sasl_auth_data.3 +184 -0
  188. data/ext/libmemcached-0.32/docs/memcached_set_sasl_callbacks.3 +184 -0
  189. data/ext/libmemcached-0.32/docs/memcached_set_user_data.3 +171 -0
  190. data/ext/libmemcached-0.32/docs/memcached_stat.3 +204 -0
  191. data/ext/libmemcached-0.32/docs/memcached_stat_get_keys.3 +204 -0
  192. data/ext/libmemcached-0.32/docs/memcached_stat_get_value.3 +204 -0
  193. data/ext/libmemcached-0.32/docs/memcached_stat_servername.3 +204 -0
  194. data/ext/libmemcached-0.32/docs/memcached_stats.pod +82 -0
  195. data/ext/libmemcached-0.32/docs/memcached_strerror.3 +168 -0
  196. data/ext/libmemcached-0.32/docs/memcached_strerror.pod +46 -0
  197. data/ext/libmemcached-0.32/docs/memcached_user_data.pod +49 -0
  198. data/ext/libmemcached-0.32/docs/memcached_verbosity.3 +163 -0
  199. data/ext/libmemcached-0.32/docs/memcached_verbosity.pod +41 -0
  200. data/ext/libmemcached-0.32/docs/memcached_version.3 +176 -0
  201. data/ext/libmemcached-0.32/docs/memcached_version.pod +56 -0
  202. data/ext/libmemcached-0.32/docs/memcat.1 +161 -0
  203. data/ext/libmemcached-0.32/docs/memcat.pod +37 -0
  204. data/ext/libmemcached-0.32/docs/memcp.1 +164 -0
  205. data/ext/libmemcached-0.32/docs/memcp.pod +40 -0
  206. data/ext/libmemcached-0.32/docs/memdump.1 +155 -0
  207. data/ext/libmemcached-0.32/docs/memdump.pod +31 -0
  208. data/ext/libmemcached-0.32/docs/memerror.1 +154 -0
  209. data/ext/libmemcached-0.32/docs/memerror.pod +30 -0
  210. data/ext/libmemcached-0.32/docs/memflush.1 +159 -0
  211. data/ext/libmemcached-0.32/docs/memflush.pod +35 -0
  212. data/ext/libmemcached-0.32/docs/memrm.1 +158 -0
  213. data/ext/libmemcached-0.32/docs/memrm.pod +34 -0
  214. data/ext/libmemcached-0.32/docs/memslap.1 +157 -0
  215. data/ext/libmemcached-0.32/docs/memslap.pod +33 -0
  216. data/ext/libmemcached-0.32/docs/memstat.1 +159 -0
  217. data/ext/libmemcached-0.32/docs/memstat.pod +35 -0
  218. data/ext/libmemcached-0.32/libmemcached/Makefile +1069 -0
  219. data/ext/libmemcached-0.32/libmemcached/Makefile.am +111 -0
  220. data/ext/libmemcached-0.32/libmemcached/Makefile.in +1069 -0
  221. data/ext/libmemcached-0.32/libmemcached/byteorder.c +31 -0
  222. data/ext/libmemcached-0.32/libmemcached/common.h +189 -0
  223. data/ext/libmemcached-0.32/libmemcached/crc.c +86 -0
  224. data/ext/libmemcached-0.32/libmemcached/hsieh_hash.c +68 -0
  225. data/ext/libmemcached-0.32/libmemcached/jenkins_hash.c +213 -0
  226. data/ext/libmemcached-0.32/libmemcached/libmemcached.la +41 -0
  227. data/ext/libmemcached-0.32/libmemcached/libmemcached.ver +1 -0
  228. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-byteorder.lo +12 -0
  229. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-byteorder.o +0 -0
  230. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-crc.lo +12 -0
  231. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-crc.o +0 -0
  232. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-jenkins_hash.lo +12 -0
  233. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-jenkins_hash.o +0 -0
  234. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-md5.lo +12 -0
  235. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-md5.o +0 -0
  236. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached.lo +12 -0
  237. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached.o +0 -0
  238. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_allocators.lo +12 -0
  239. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_allocators.o +0 -0
  240. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_analyze.lo +12 -0
  241. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_analyze.o +0 -0
  242. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_auto.lo +12 -0
  243. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_auto.o +0 -0
  244. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_behavior.lo +12 -0
  245. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_behavior.o +0 -0
  246. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_connect.lo +12 -0
  247. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_connect.o +0 -0
  248. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_delete.lo +12 -0
  249. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_delete.o +0 -0
  250. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_do.lo +12 -0
  251. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_do.o +0 -0
  252. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_dump.lo +12 -0
  253. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_dump.o +0 -0
  254. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_exist.lo +12 -0
  255. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_exist.o +0 -0
  256. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_fetch.lo +12 -0
  257. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_fetch.o +0 -0
  258. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_flush.lo +12 -0
  259. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_flush.o +0 -0
  260. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_flush_buffers.lo +12 -0
  261. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_flush_buffers.o +0 -0
  262. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_get.lo +12 -0
  263. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_get.o +0 -0
  264. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_hash.lo +12 -0
  265. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_hash.o +0 -0
  266. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_hosts.lo +12 -0
  267. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_hosts.o +0 -0
  268. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_io.lo +12 -0
  269. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_io.o +0 -0
  270. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_key.lo +12 -0
  271. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_key.o +0 -0
  272. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_parse.lo +12 -0
  273. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_parse.o +0 -0
  274. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_purge.lo +12 -0
  275. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_purge.o +0 -0
  276. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_quit.lo +12 -0
  277. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_quit.o +0 -0
  278. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_response.lo +12 -0
  279. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_response.o +0 -0
  280. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_result.lo +12 -0
  281. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_result.o +0 -0
  282. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_sasl.lo +12 -0
  283. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_sasl.o +0 -0
  284. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_server.lo +12 -0
  285. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_server.o +0 -0
  286. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_stats.lo +12 -0
  287. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_stats.o +0 -0
  288. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_storage.lo +12 -0
  289. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_storage.o +0 -0
  290. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_strerror.lo +12 -0
  291. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_strerror.o +0 -0
  292. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_string.lo +12 -0
  293. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_string.o +0 -0
  294. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_touch.lo +12 -0
  295. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_touch.o +0 -0
  296. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_verbosity.lo +12 -0
  297. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_verbosity.o +0 -0
  298. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_version.lo +12 -0
  299. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-memcached_version.o +0 -0
  300. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-murmur_hash.lo +12 -0
  301. data/ext/libmemcached-0.32/libmemcached/libmemcached_la-murmur_hash.o +0 -0
  302. data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.d +30 -0
  303. data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.h +82 -0
  304. data/ext/libmemcached-0.32/libmemcached/libmemcachedcallbacks.la +41 -0
  305. data/ext/libmemcached-0.32/libmemcached/libmemcachedcallbacks_la-memcached_callback.lo +12 -0
  306. data/ext/libmemcached-0.32/libmemcached/libmemcachedcallbacks_la-memcached_callback.o +0 -0
  307. data/ext/libmemcached-0.32/libmemcached/md5.c +354 -0
  308. data/ext/libmemcached-0.32/libmemcached/memcached.c +152 -0
  309. data/ext/libmemcached-0.32/libmemcached/memcached.h +304 -0
  310. data/ext/libmemcached-0.32/libmemcached/memcached.hpp +799 -0
  311. data/ext/libmemcached-0.32/libmemcached/memcached/README.txt +7 -0
  312. data/ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +385 -0
  313. data/ext/libmemcached-0.32/libmemcached/memcached_allocators.c +72 -0
  314. data/ext/libmemcached-0.32/libmemcached/memcached_analyze.c +100 -0
  315. data/ext/libmemcached-0.32/libmemcached/memcached_auto.c +207 -0
  316. data/ext/libmemcached-0.32/libmemcached/memcached_behavior.c +285 -0
  317. data/ext/libmemcached-0.32/libmemcached/memcached_callback.c +175 -0
  318. data/ext/libmemcached-0.32/libmemcached/memcached_configure.h +23 -0
  319. data/ext/libmemcached-0.32/libmemcached/memcached_configure.h.in +23 -0
  320. data/ext/libmemcached-0.32/libmemcached/memcached_connect.c +371 -0
  321. data/ext/libmemcached-0.32/libmemcached/memcached_constants.h +145 -0
  322. data/ext/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
  323. data/ext/libmemcached-0.32/libmemcached/memcached_do.c +70 -0
  324. data/ext/libmemcached-0.32/libmemcached/memcached_dump.c +79 -0
  325. data/ext/libmemcached-0.32/libmemcached/memcached_exist.c +114 -0
  326. data/ext/libmemcached-0.32/libmemcached/memcached_exist.h +20 -0
  327. data/ext/libmemcached-0.32/libmemcached/memcached_fetch.c +102 -0
  328. data/ext/libmemcached-0.32/libmemcached/memcached_flush.c +89 -0
  329. data/ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +22 -0
  330. data/ext/libmemcached-0.32/libmemcached/memcached_get.c +494 -0
  331. data/ext/libmemcached-0.32/libmemcached/memcached_get.h +87 -0
  332. data/ext/libmemcached-0.32/libmemcached/memcached_hash.c +252 -0
  333. data/ext/libmemcached-0.32/libmemcached/memcached_hosts.c +510 -0
  334. data/ext/libmemcached-0.32/libmemcached/memcached_internal.h +31 -0
  335. data/ext/libmemcached-0.32/libmemcached/memcached_io.c +575 -0
  336. data/ext/libmemcached-0.32/libmemcached/memcached_io.h +72 -0
  337. data/ext/libmemcached-0.32/libmemcached/memcached_key.c +28 -0
  338. data/ext/libmemcached-0.32/libmemcached/memcached_parse.c +74 -0
  339. data/ext/libmemcached-0.32/libmemcached/memcached_pool.h +38 -0
  340. data/ext/libmemcached-0.32/libmemcached/memcached_purge.c +76 -0
  341. data/ext/libmemcached-0.32/libmemcached/memcached_quit.c +75 -0
  342. data/ext/libmemcached-0.32/libmemcached/memcached_response.c +529 -0
  343. data/ext/libmemcached-0.32/libmemcached/memcached_result.c +57 -0
  344. data/ext/libmemcached-0.32/libmemcached/memcached_result.h +59 -0
  345. data/ext/libmemcached-0.32/libmemcached/memcached_sasl.c +225 -0
  346. data/ext/libmemcached-0.32/libmemcached/memcached_sasl.h +44 -0
  347. data/ext/libmemcached-0.32/libmemcached/memcached_server.c +159 -0
  348. data/ext/libmemcached-0.32/libmemcached/memcached_server.h +93 -0
  349. data/ext/libmemcached-0.32/libmemcached/memcached_stats.c +437 -0
  350. data/ext/libmemcached-0.32/libmemcached/memcached_storage.c +515 -0
  351. data/ext/libmemcached-0.32/libmemcached/memcached_storage.h +107 -0
  352. data/ext/libmemcached-0.32/libmemcached/memcached_strerror.c +92 -0
  353. data/ext/libmemcached-0.32/libmemcached/memcached_string.c +138 -0
  354. data/ext/libmemcached-0.32/libmemcached/memcached_string.h +53 -0
  355. data/ext/libmemcached-0.32/libmemcached/memcached_touch.c +60 -0
  356. data/ext/libmemcached-0.32/libmemcached/memcached_touch.h +31 -0
  357. data/ext/libmemcached-0.32/libmemcached/memcached_types.h +44 -0
  358. data/ext/libmemcached-0.32/libmemcached/memcached_util.h +15 -0
  359. data/ext/libmemcached-0.32/libmemcached/memcached_verbosity.c +36 -0
  360. data/ext/libmemcached-0.32/libmemcached/memcached_version.c +112 -0
  361. data/ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h +38 -0
  362. data/ext/libmemcached-0.32/libmemcached/murmur_hash.c +76 -0
  363. data/ext/libmemcached-0.32/libmemcached/visibility.h +51 -0
  364. data/ext/libmemcached-0.32/libmemcachedutil/Makefile +604 -0
  365. data/ext/libmemcached-0.32/libmemcachedutil/Makefile.am +11 -0
  366. data/ext/libmemcached-0.32/libmemcachedutil/Makefile.in +604 -0
  367. data/ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +1 -0
  368. data/ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c +170 -0
  369. data/ext/libmemcached-0.32/libtool +10223 -0
  370. data/ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +103 -0
  371. data/ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +67 -0
  372. data/ext/libmemcached-0.32/m4/acx_pthread.m4 +276 -0
  373. data/ext/libmemcached-0.32/m4/byteorder.m4 +40 -0
  374. data/ext/libmemcached-0.32/m4/deprecated.m4 +17 -0
  375. data/ext/libmemcached-0.32/m4/enable_utillib.m4 +16 -0
  376. data/ext/libmemcached-0.32/m4/extensions.m4 +94 -0
  377. data/ext/libmemcached-0.32/m4/hsieh.m4 +18 -0
  378. data/ext/libmemcached-0.32/m4/lib-prefix.m4 +221 -0
  379. data/ext/libmemcached-0.32/m4/libtool.m4 +7831 -0
  380. data/ext/libmemcached-0.32/m4/ltoptions.m4 +369 -0
  381. data/ext/libmemcached-0.32/m4/ltsugar.m4 +123 -0
  382. data/ext/libmemcached-0.32/m4/ltversion.m4 +23 -0
  383. data/ext/libmemcached-0.32/m4/lt~obsolete.m4 +98 -0
  384. data/ext/libmemcached-0.32/m4/memcached.m4 +30 -0
  385. data/ext/libmemcached-0.32/m4/pandora_64bit.m4 +55 -0
  386. data/ext/libmemcached-0.32/m4/pandora_canonical.m4 +151 -0
  387. data/ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +37 -0
  388. data/ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +16 -0
  389. data/ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +41 -0
  390. data/ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +36 -0
  391. data/ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +54 -0
  392. data/ext/libmemcached-0.32/m4/pandora_have_sasl.m4 +133 -0
  393. data/ext/libmemcached-0.32/m4/pandora_header_assert.m4 +23 -0
  394. data/ext/libmemcached-0.32/m4/pandora_libtool.m4 +15 -0
  395. data/ext/libmemcached-0.32/m4/pandora_optimize.m4 +79 -0
  396. data/ext/libmemcached-0.32/m4/pandora_shared_ptr.m4 +56 -0
  397. data/ext/libmemcached-0.32/m4/pandora_vc_build.m4 +32 -0
  398. data/ext/libmemcached-0.32/m4/pandora_warnings.m4 +262 -0
  399. data/ext/libmemcached-0.32/m4/pod2man.m4 +7 -0
  400. data/ext/libmemcached-0.32/m4/protocol_binary.m4 +23 -0
  401. data/ext/libmemcached-0.32/m4/setsockopt.m4 +57 -0
  402. data/ext/libmemcached-0.32/m4/visibility.m4 +52 -0
  403. data/ext/libmemcached-0.32/stamp-h1 +1 -0
  404. data/ext/libmemcached-0.32/support/Makefile +487 -0
  405. data/ext/libmemcached-0.32/support/Makefile.am +4 -0
  406. data/ext/libmemcached-0.32/support/Makefile.in +487 -0
  407. data/ext/libmemcached-0.32/support/libmemcached-fc.spec +105 -0
  408. data/ext/libmemcached-0.32/support/libmemcached-fc.spec.in +105 -0
  409. data/ext/libmemcached-0.32/support/libmemcached.pc +10 -0
  410. data/ext/libmemcached-0.32/support/libmemcached.pc.in +10 -0
  411. data/ext/libmemcached-0.32/support/libmemcached.spec +105 -0
  412. data/ext/libmemcached-0.32/support/libmemcached.spec.in +105 -0
  413. data/ext/libmemcached-0.32/support/set_benchmark.sh +5 -0
  414. data/ext/libmemcached-0.32/tests/Makefile +762 -0
  415. data/ext/libmemcached-0.32/tests/Makefile.am +113 -0
  416. data/ext/libmemcached-0.32/tests/Makefile.in +762 -0
  417. data/ext/libmemcached-0.32/tests/atomsmasher +0 -0
  418. data/ext/libmemcached-0.32/tests/atomsmasher.c +245 -0
  419. data/ext/libmemcached-0.32/tests/atomsmasher.o +0 -0
  420. data/ext/libmemcached-0.32/tests/function.c +4893 -0
  421. data/ext/libmemcached-0.32/tests/ketama_test_cases.h +108 -0
  422. data/ext/libmemcached-0.32/tests/libserver.la +41 -0
  423. data/ext/libmemcached-0.32/tests/libtest.la +41 -0
  424. data/ext/libmemcached-0.32/tests/output.cmp +7 -0
  425. data/ext/libmemcached-0.32/tests/output.res +7 -0
  426. data/ext/libmemcached-0.32/tests/output2.res +46 -0
  427. data/ext/libmemcached-0.32/tests/plus.cpp +293 -0
  428. data/ext/libmemcached-0.32/tests/plus.o +0 -0
  429. data/ext/libmemcached-0.32/tests/r/memcat.res +19 -0
  430. data/ext/libmemcached-0.32/tests/r/memcp.res +27 -0
  431. data/ext/libmemcached-0.32/tests/r/memrm.res +19 -0
  432. data/ext/libmemcached-0.32/tests/r/memslap.res +33 -0
  433. data/ext/libmemcached-0.32/tests/r/memstat.res +33 -0
  434. data/ext/libmemcached-0.32/tests/server.c +118 -0
  435. data/ext/libmemcached-0.32/tests/server.h +25 -0
  436. data/ext/libmemcached-0.32/tests/server.lo +12 -0
  437. data/ext/libmemcached-0.32/tests/server.o +0 -0
  438. data/ext/libmemcached-0.32/tests/start.c +16 -0
  439. data/ext/libmemcached-0.32/tests/start.o +0 -0
  440. data/ext/libmemcached-0.32/tests/startservers +0 -0
  441. data/ext/libmemcached-0.32/tests/t/memcat.test +4 -0
  442. data/ext/libmemcached-0.32/tests/t/memcp.test +3 -0
  443. data/ext/libmemcached-0.32/tests/t/memrm.test +3 -0
  444. data/ext/libmemcached-0.32/tests/t/memslap.test +5 -0
  445. data/ext/libmemcached-0.32/tests/t/memstat.test +3 -0
  446. data/ext/libmemcached-0.32/tests/test.c +137 -0
  447. data/ext/libmemcached-0.32/tests/test.h +46 -0
  448. data/ext/libmemcached-0.32/tests/test.lo +12 -0
  449. data/ext/libmemcached-0.32/tests/test.o +0 -0
  450. data/ext/libmemcached-0.32/tests/testapp +0 -0
  451. data/ext/libmemcached-0.32/tests/testapp-function.o +0 -0
  452. data/ext/libmemcached-0.32/tests/testplus +0 -0
  453. data/ext/libmemcached-0.32/tests/udp.c +76 -0
  454. data/ext/libmemcached-0.32/tests/udp.o +0 -0
  455. data/ext/libmemcached-0.32/tests/udptest +0 -0
  456. data/ext/rlibmemcached.bundle +0 -0
  457. data/ext/rlibmemcached.i +249 -0
  458. data/ext/rlibmemcached_wrap.c +13781 -0
  459. data/ext/rlibmemcached_wrap.o +0 -0
  460. data/ext/share/man/man1/memcat.1 +161 -0
  461. data/ext/share/man/man1/memcp.1 +164 -0
  462. data/ext/share/man/man1/memdump.1 +155 -0
  463. data/ext/share/man/man1/memerror.1 +154 -0
  464. data/ext/share/man/man1/memflush.1 +159 -0
  465. data/ext/share/man/man1/memrm.1 +158 -0
  466. data/ext/share/man/man1/memslap.1 +157 -0
  467. data/ext/share/man/man1/memstat.1 +159 -0
  468. data/ext/share/man/man3/libmemcached.3 +229 -0
  469. data/ext/share/man/man3/libmemcached_examples.3 +242 -0
  470. data/ext/share/man/man3/memcached_add.3 +308 -0
  471. data/ext/share/man/man3/memcached_add_by_key.3 +308 -0
  472. data/ext/share/man/man3/memcached_analyze.3 +175 -0
  473. data/ext/share/man/man3/memcached_append.3 +308 -0
  474. data/ext/share/man/man3/memcached_append_by_key.3 +308 -0
  475. data/ext/share/man/man3/memcached_behavior_get.3 +317 -0
  476. data/ext/share/man/man3/memcached_behavior_set.3 +317 -0
  477. data/ext/share/man/man3/memcached_callback_get.3 +231 -0
  478. data/ext/share/man/man3/memcached_callback_set.3 +231 -0
  479. data/ext/share/man/man3/memcached_cas.3 +308 -0
  480. data/ext/share/man/man3/memcached_cas_by_key.3 +308 -0
  481. data/ext/share/man/man3/memcached_clone.3 +183 -0
  482. data/ext/share/man/man3/memcached_create.3 +183 -0
  483. data/ext/share/man/man3/memcached_decrement.3 +219 -0
  484. data/ext/share/man/man3/memcached_decrement_with_initial.3 +219 -0
  485. data/ext/share/man/man3/memcached_delete.3 +176 -0
  486. data/ext/share/man/man3/memcached_delete_by_key.3 +176 -0
  487. data/ext/share/man/man3/memcached_destroy_sasl_auth_data.3 +184 -0
  488. data/ext/share/man/man3/memcached_dump.3 +175 -0
  489. data/ext/share/man/man3/memcached_fetch.3 +283 -0
  490. data/ext/share/man/man3/memcached_fetch_execute.3 +283 -0
  491. data/ext/share/man/man3/memcached_fetch_result.3 +283 -0
  492. data/ext/share/man/man3/memcached_flush_buffers.3 +164 -0
  493. data/ext/share/man/man3/memcached_free.3 +183 -0
  494. data/ext/share/man/man3/memcached_generate_hash_value.3 +179 -0
  495. data/ext/share/man/man3/memcached_get.3 +283 -0
  496. data/ext/share/man/man3/memcached_get_by_key.3 +283 -0
  497. data/ext/share/man/man3/memcached_get_memory_allocators.3 +194 -0
  498. data/ext/share/man/man3/memcached_get_sasl_callbacks.3 +184 -0
  499. data/ext/share/man/man3/memcached_get_user_data.3 +171 -0
  500. data/ext/share/man/man3/memcached_increment.3 +219 -0
  501. data/ext/share/man/man3/memcached_increment_with_initial.3 +219 -0
  502. data/ext/share/man/man3/memcached_lib_version.3 +176 -0
  503. data/ext/share/man/man3/memcached_mget.3 +283 -0
  504. data/ext/share/man/man3/memcached_mget_by_key.3 +283 -0
  505. data/ext/share/man/man3/memcached_prepend.3 +308 -0
  506. data/ext/share/man/man3/memcached_prepend_by_key.3 +308 -0
  507. data/ext/share/man/man3/memcached_quit.3 +169 -0
  508. data/ext/share/man/man3/memcached_replace.3 +308 -0
  509. data/ext/share/man/man3/memcached_replace_by_key.3 +308 -0
  510. data/ext/share/man/man3/memcached_server_add.3 +224 -0
  511. data/ext/share/man/man3/memcached_server_count.3 +224 -0
  512. data/ext/share/man/man3/memcached_server_list.3 +224 -0
  513. data/ext/share/man/man3/memcached_server_list_append.3 +196 -0
  514. data/ext/share/man/man3/memcached_server_list_count.3 +196 -0
  515. data/ext/share/man/man3/memcached_server_list_free.3 +196 -0
  516. data/ext/share/man/man3/memcached_server_push.3 +224 -0
  517. data/ext/share/man/man3/memcached_servers_parse.3 +196 -0
  518. data/ext/share/man/man3/memcached_set.3 +308 -0
  519. data/ext/share/man/man3/memcached_set_by_key.3 +308 -0
  520. data/ext/share/man/man3/memcached_set_memory_allocators.3 +194 -0
  521. data/ext/share/man/man3/memcached_set_sasl_auth_data.3 +184 -0
  522. data/ext/share/man/man3/memcached_set_sasl_callbacks.3 +184 -0
  523. data/ext/share/man/man3/memcached_set_user_data.3 +171 -0
  524. data/ext/share/man/man3/memcached_stat.3 +204 -0
  525. data/ext/share/man/man3/memcached_stat_get_keys.3 +204 -0
  526. data/ext/share/man/man3/memcached_stat_get_value.3 +204 -0
  527. data/ext/share/man/man3/memcached_stat_servername.3 +204 -0
  528. data/ext/share/man/man3/memcached_strerror.3 +168 -0
  529. data/ext/share/man/man3/memcached_verbosity.3 +163 -0
  530. data/ext/share/man/man3/memcached_version.3 +176 -0
  531. data/lib/memcached.rb +32 -0
  532. data/lib/memcached/behaviors.rb +77 -0
  533. data/lib/memcached/exceptions.rb +84 -0
  534. data/lib/memcached/experimental.rb +48 -0
  535. data/lib/memcached/memcached.rb +683 -0
  536. data/lib/memcached/rails.rb +200 -0
  537. data/test/test_helper.rb +19 -0
  538. data/test/unit/binding_test.rb +8 -0
  539. data/test/unit/memcached_experimental_test.rb +274 -0
  540. data/test/unit/memcached_test.rb +1340 -0
  541. data/test/unit/rails_test.rb +282 -0
  542. metadata +658 -0
@@ -0,0 +1,87 @@
1
+ require 'mkmf'
2
+ require 'rbconfig'
3
+
4
+ HERE = File.expand_path(File.dirname(__FILE__))
5
+ BUNDLE_PATH = Dir.glob("libmemcached-*").first
6
+
7
+ SOLARIS_32 = Config::CONFIG['target'] == "i386-pc-solaris2.10"
8
+ BSD = Config::CONFIG['host_os'].downcase =~ /bsd/
9
+
10
+ $CFLAGS = "#{Config::CONFIG['CFLAGS']} #{$CFLAGS}".gsub("$(cflags)", "").gsub("-fno-common", "").gsub("-Werror=declaration-after-statement", "")
11
+ $CFLAGS << " -std=gnu99" if SOLARIS_32
12
+ $CFLAGS << " -I/usr/local/include" if BSD
13
+ $EXTRA_CONF = " --disable-64bit" if SOLARIS_32
14
+ $LDFLAGS = "#{Config::CONFIG['LDFLAGS']} #{$LDFLAGS} -L#{Config::CONFIG['libdir']}".gsub("$(ldflags)", "").gsub("-fno-common", "")
15
+ $CXXFLAGS = "#{Config::CONFIG['CXXFLAGS']} -std=gnu++98"
16
+ $CC = "CC=#{Config::MAKEFILE_CONFIG["CC"].inspect}"
17
+
18
+ # JRuby's default configure options can't build libmemcached properly
19
+ LIBM_CFLAGS = defined?(JRUBY_VERSION) ? "-fPIC -g -O2" : $CFLAGS
20
+ LIBM_LDFLAGS = defined?(JRUBY_VERSION) ? "-fPIC -lsasl2 -lm" : $LDFLAGS
21
+
22
+ GMAKE_CMD = Config::CONFIG['host_os'].downcase =~ /bsd|solaris/ ? "gmake" : "make"
23
+ TAR_CMD = SOLARIS_32 ? 'gtar' : 'tar'
24
+ PATCH_CMD = SOLARIS_32 ? 'gpatch' : 'patch'
25
+
26
+ if ENV['DEBUG']
27
+ puts "Setting debug flags."
28
+ $CFLAGS << " -O0 -ggdb -DHAVE_DEBUG"
29
+ $EXTRA_CONF = ""
30
+ end
31
+
32
+ def run(cmd, reason)
33
+ puts reason
34
+ puts cmd
35
+ raise "'#{cmd}' failed" unless system(cmd)
36
+ end
37
+
38
+ def check_libmemcached
39
+ return if ENV["EXTERNAL_LIB"]
40
+
41
+ $includes = " -I#{HERE}/include"
42
+ $defines = " -DLIBMEMCACHED_WITH_SASL_SUPPORT"
43
+ $libraries = " -L#{HERE}/lib"
44
+ $CFLAGS = "#{$includes} #{$libraries} #{$CFLAGS}"
45
+ $LDFLAGS = "-lsasl2 -lm #{$libraries} #{$LDFLAGS}"
46
+ $LIBPATH = ["#{HERE}/lib"]
47
+ $DEFLIBPATH = [] unless SOLARIS_32
48
+
49
+ Dir.chdir(HERE) do
50
+ Dir.chdir(BUNDLE_PATH) do
51
+ run("find . | xargs touch", "Touching all files so autoconf doesn't run.")
52
+ run("env CFLAGS='-fPIC #{LIBM_CFLAGS}' LDFLAGS='-fPIC #{LIBM_LDFLAGS}' ./configure --prefix=#{HERE} --without-memcached --disable-shared --disable-utils --disable-dependency-tracking #{$CC} #{$EXTRA_CONF} 2>&1", "Configuring libmemcached.")
53
+ end
54
+
55
+ Dir.chdir(BUNDLE_PATH) do
56
+ #Running the make command in another script invoked by another shell command solves the "cd ." issue on FreeBSD 6+
57
+ run("GMAKE_CMD='#{GMAKE_CMD}' CXXFLAGS='#{$CXXFLAGS} #{LIBM_CFLAGS}' SOURCE_DIR='#{BUNDLE_PATH}' HERE='#{HERE}' ruby ../extconf-make.rb", "Making libmemcached.")
58
+ end
59
+ end
60
+
61
+ # Absolutely prevent the linker from picking up any other libmemcached
62
+ Dir.chdir("#{HERE}/lib") do
63
+ system("cp -f libmemcached.a libmemcached_gem.a")
64
+ system("cp -f libmemcached.la libmemcached_gem.la")
65
+ end
66
+ $LIBS << " -lmemcached_gem -lsasl2"
67
+ end
68
+
69
+ check_libmemcached
70
+
71
+ if ENV['SWIG']
72
+ puts "WARNING: Swig 2.0.2 not found. Other versions may not work." if (`swig -version`!~ /2.0.2/)
73
+ run("swig #{$defines} #{$includes} -ruby -autorename -o rlibmemcached_wrap.c.in rlibmemcached.i", "Running SWIG.")
74
+ swig_patches = {
75
+ "STR2CSTR" => "StringValuePtr", # Patching SWIG output for Ruby 1.9.
76
+ "\"swig_runtime_data\"" => "\"SwigRuntimeData\"", # Patching SWIG output for Ruby 1.9.
77
+ "#ifndef RUBY_INIT_STACK" => "#ifdef __NEVER__", # Patching SWIG output for JRuby.
78
+ }.map{|pair| "s/#{pair.join('/')}/"}.join(';')
79
+
80
+ # sed has different syntax for inplace switch in BSD and GNU version, so using intermediate file
81
+ run("sed '#{swig_patches}' rlibmemcached_wrap.c.in > rlibmemcached_wrap.c", "Apply patches to SWIG output")
82
+ end
83
+
84
+ $CFLAGS << " -Os"
85
+ create_makefile 'rlibmemcached'
86
+ run("mv Makefile Makefile.in", "Copy Makefile")
87
+ run("sed 's/-I.opt.local.include//' Makefile.in > Makefile", "Remove MacPorts from the include path")
@@ -0,0 +1,304 @@
1
+ /*
2
+ * Summary: interface for memcached server
3
+ * Description: main include file for libmemcached
4
+ *
5
+ * Copy: See Copyright for the status of this software.
6
+ *
7
+ * Author: Brian Aker
8
+ */
9
+
10
+ #ifndef LIBMEMCACHED_MEMCACHED_H
11
+ #define LIBMEMCACHED_MEMCACHED_H
12
+
13
+ #include <stdlib.h>
14
+ #include <inttypes.h>
15
+ #if !defined(__cplusplus)
16
+ # include <stdbool.h>
17
+ #endif
18
+ #include <sys/types.h>
19
+ #include <netinet/in.h>
20
+
21
+ #include <libmemcached/visibility.h>
22
+ #include <libmemcached/memcached_configure.h>
23
+ #include <libmemcached/memcached_constants.h>
24
+ #include <libmemcached/memcached_types.h>
25
+ #include <libmemcached/memcached_get.h>
26
+ #include <libmemcached/memcached_touch.h>
27
+ #include <libmemcached/memcached_server.h>
28
+ #include <libmemcached/memcached_string.h>
29
+ #include <libmemcached/memcached_result.h>
30
+ #include <libmemcached/memcached_storage.h>
31
+ #include <libmemcached/memcached_exist.h>
32
+ #include <libmemcached/memcached_sasl.h>
33
+
34
+ #ifdef __cplusplus
35
+ extern "C" {
36
+ #endif
37
+
38
+ #define MEMCACHED_VERSION_STRING_LENGTH 24
39
+ #define LIBMEMCACHED_VERSION_STRING "0.32"
40
+
41
+ struct memcached_analysis_st {
42
+ uint32_t average_item_size;
43
+ uint32_t longest_uptime;
44
+ uint32_t least_free_server;
45
+ uint32_t most_consumed_server;
46
+ uint32_t oldest_server;
47
+ double pool_hit_ratio;
48
+ uint64_t most_used_bytes;
49
+ uint64_t least_remaining_bytes;
50
+ };
51
+
52
+ struct memcached_stat_st {
53
+ uint32_t connection_structures;
54
+ uint32_t curr_connections;
55
+ uint32_t curr_items;
56
+ uint32_t pid;
57
+ uint32_t pointer_size;
58
+ uint32_t rusage_system_microseconds;
59
+ uint32_t rusage_system_seconds;
60
+ uint32_t rusage_user_microseconds;
61
+ uint32_t rusage_user_seconds;
62
+ uint32_t threads;
63
+ uint32_t time;
64
+ uint32_t total_connections;
65
+ uint32_t total_items;
66
+ uint32_t uptime;
67
+ uint64_t bytes;
68
+ uint64_t bytes_read;
69
+ uint64_t bytes_written;
70
+ uint64_t cmd_get;
71
+ uint64_t cmd_set;
72
+ uint64_t evictions;
73
+ uint64_t get_hits;
74
+ uint64_t get_misses;
75
+ uint64_t limit_maxbytes;
76
+ char version[MEMCACHED_VERSION_STRING_LENGTH];
77
+ };
78
+
79
+ struct memcached_st {
80
+ uint8_t purging;
81
+ bool is_allocated;
82
+ uint8_t distribution;
83
+ uint8_t hash;
84
+ uint32_t continuum_points_counter;
85
+ memcached_server_st *hosts;
86
+ int32_t snd_timeout;
87
+ int32_t rcv_timeout;
88
+ uint32_t server_failure_limit;
89
+ uint32_t io_msg_watermark;
90
+ uint32_t io_bytes_watermark;
91
+ uint32_t io_key_prefetch;
92
+ uint32_t number_of_hosts;
93
+ uint32_t cursor_server;
94
+ int cached_errno;
95
+ uint32_t flags;
96
+ int32_t poll_timeout;
97
+ int32_t connect_timeout;
98
+ int32_t retry_timeout;
99
+ uint32_t continuum_count;
100
+ int send_size;
101
+ int recv_size;
102
+ void *user_data;
103
+ time_t next_distribution_rebuild;
104
+ size_t prefix_key_length;
105
+ memcached_hash hash_continuum;
106
+ memcached_result_st result;
107
+ memcached_continuum_item_st *continuum;
108
+ memcached_clone_func on_clone;
109
+ memcached_cleanup_func on_cleanup;
110
+ memcached_free_function call_free;
111
+ memcached_malloc_function call_malloc;
112
+ memcached_realloc_function call_realloc;
113
+ memcached_calloc_function call_calloc;
114
+ memcached_trigger_key get_key_failure;
115
+ memcached_trigger_delete_key delete_trigger;
116
+ char prefix_key[MEMCACHED_PREFIX_KEY_MAX_SIZE];
117
+ uint32_t number_of_live_hosts;
118
+ uint32_t *live_host_indices;
119
+ uint32_t live_host_indices_size;
120
+ #ifdef LIBMEMCACHED_WITH_SASL_SUPPORT
121
+ const sasl_callback_t *sasl_callbacks;
122
+ #endif
123
+ int last_server_key;
124
+ };
125
+
126
+ LIBMEMCACHED_API
127
+ memcached_return memcached_version(memcached_st *ptr);
128
+
129
+ /* Public API */
130
+
131
+ LIBMEMCACHED_API
132
+ const char * memcached_lib_version(void);
133
+
134
+ LIBMEMCACHED_API
135
+ memcached_st *memcached_create(memcached_st *ptr);
136
+ LIBMEMCACHED_API
137
+ void memcached_free(memcached_st *ptr);
138
+ LIBMEMCACHED_API
139
+ memcached_st *memcached_clone(memcached_st *clone, memcached_st *ptr);
140
+
141
+ LIBMEMCACHED_API
142
+ memcached_return memcached_delete(memcached_st *ptr, const char *key, size_t key_length,
143
+ time_t expiration);
144
+ LIBMEMCACHED_API
145
+ memcached_return memcached_increment(memcached_st *ptr,
146
+ const char *key, size_t key_length,
147
+ uint32_t offset,
148
+ uint64_t *value);
149
+ LIBMEMCACHED_API
150
+ memcached_return memcached_decrement(memcached_st *ptr,
151
+ const char *key, size_t key_length,
152
+ uint32_t offset,
153
+ uint64_t *value);
154
+ LIBMEMCACHED_API
155
+ memcached_return memcached_increment_with_initial(memcached_st *ptr,
156
+ const char *key,
157
+ size_t key_length,
158
+ uint64_t offset,
159
+ uint64_t initial,
160
+ time_t expiration,
161
+ uint64_t *value);
162
+ LIBMEMCACHED_API
163
+ memcached_return memcached_decrement_with_initial(memcached_st *ptr,
164
+ const char *key,
165
+ size_t key_length,
166
+ uint64_t offset,
167
+ uint64_t initial,
168
+ time_t expiration,
169
+ uint64_t *value);
170
+ LIBMEMCACHED_API
171
+ void memcached_stat_free(memcached_st *, memcached_stat_st *);
172
+ LIBMEMCACHED_API
173
+ memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return *error);
174
+ LIBMEMCACHED_API
175
+ memcached_return memcached_stat_servername(memcached_stat_st *memc_stat, char *args,
176
+ char *hostname, unsigned int port);
177
+ LIBMEMCACHED_API
178
+ memcached_return memcached_flush(memcached_st *ptr, time_t expiration);
179
+ LIBMEMCACHED_API
180
+ memcached_return memcached_verbosity(memcached_st *ptr, unsigned int verbosity);
181
+ LIBMEMCACHED_API
182
+ void memcached_quit(memcached_st *ptr);
183
+ LIBMEMCACHED_API
184
+ const char *memcached_strerror(memcached_st *ptr, memcached_return rc);
185
+ LIBMEMCACHED_API
186
+ memcached_return memcached_behavior_set(memcached_st *ptr, memcached_behavior flag, uint64_t data);
187
+ LIBMEMCACHED_API
188
+ uint64_t memcached_behavior_get(memcached_st *ptr, memcached_behavior flag);
189
+
190
+ /* The two public hash bits */
191
+ LIBMEMCACHED_API
192
+ uint32_t memcached_generate_hash_value(const char *key, size_t key_length, memcached_hash hash_algorithm);
193
+ LIBMEMCACHED_API
194
+ uint32_t memcached_generate_hash(memcached_st *ptr, const char *key, size_t key_length);
195
+
196
+ LIBMEMCACHED_API
197
+ memcached_return memcached_flush_buffers(memcached_st *mem);
198
+
199
+ /* Server Public functions */
200
+
201
+ LIBMEMCACHED_API
202
+ memcached_return memcached_server_add_udp(memcached_st *ptr,
203
+ const char *hostname,
204
+ unsigned int port);
205
+ LIBMEMCACHED_API
206
+ memcached_return memcached_server_add_unix_socket(memcached_st *ptr,
207
+ const char *filename);
208
+ LIBMEMCACHED_API
209
+ memcached_return memcached_server_add(memcached_st *ptr, const char *hostname,
210
+ unsigned int port);
211
+
212
+ LIBMEMCACHED_API
213
+ memcached_return memcached_server_add_udp_with_weight(memcached_st *ptr,
214
+ const char *hostname,
215
+ unsigned int port,
216
+ uint32_t weight);
217
+ LIBMEMCACHED_API
218
+ memcached_return memcached_server_add_unix_socket_with_weight(memcached_st *ptr,
219
+ const char *filename,
220
+ uint32_t weight);
221
+ LIBMEMCACHED_API
222
+ memcached_return memcached_server_add_with_weight(memcached_st *ptr, const char *hostname,
223
+ unsigned int port,
224
+ uint32_t weight);
225
+ LIBMEMCACHED_API
226
+ void memcached_server_list_free(memcached_server_st *ptr);
227
+ LIBMEMCACHED_API
228
+ memcached_return memcached_server_push(memcached_st *ptr, memcached_server_st *list);
229
+
230
+ LIBMEMCACHED_API
231
+ memcached_server_st *memcached_server_list_append(memcached_server_st *ptr,
232
+ const char *hostname,
233
+ unsigned int port,
234
+ memcached_return *error);
235
+ LIBMEMCACHED_API
236
+ memcached_server_st *memcached_server_list_append_with_weight(memcached_server_st *ptr,
237
+ const char *hostname,
238
+ unsigned int port,
239
+ uint32_t weight,
240
+ memcached_return *error);
241
+ LIBMEMCACHED_API
242
+ unsigned int memcached_server_list_count(memcached_server_st *ptr);
243
+ LIBMEMCACHED_API
244
+ memcached_server_st *memcached_servers_parse(const char *server_strings);
245
+
246
+ LIBMEMCACHED_API
247
+ char *memcached_stat_get_value(memcached_st *ptr, memcached_stat_st *memc_stat,
248
+ const char *key, memcached_return *error);
249
+ LIBMEMCACHED_API
250
+ char ** memcached_stat_get_keys(memcached_st *ptr, memcached_stat_st *memc_stat,
251
+ memcached_return *error);
252
+
253
+ LIBMEMCACHED_API
254
+ memcached_return memcached_delete_by_key(memcached_st *ptr,
255
+ const char *master_key, size_t master_key_length,
256
+ const char *key, size_t key_length,
257
+ time_t expiration);
258
+
259
+ LIBMEMCACHED_API
260
+ memcached_return memcached_fetch_execute(memcached_st *ptr,
261
+ memcached_execute_function *callback,
262
+ void *context,
263
+ unsigned int number_of_callbacks);
264
+
265
+ LIBMEMCACHED_API
266
+ memcached_return memcached_callback_set(memcached_st *ptr,
267
+ memcached_callback flag,
268
+ void *data);
269
+ LIBMEMCACHED_API
270
+ void *memcached_callback_get(memcached_st *ptr,
271
+ memcached_callback flag,
272
+ memcached_return *error);
273
+
274
+ LIBMEMCACHED_API
275
+ memcached_return memcached_dump(memcached_st *ptr, memcached_dump_func *function, void *context, uint32_t number_of_callbacks);
276
+
277
+
278
+ LIBMEMCACHED_API
279
+ memcached_return memcached_set_memory_allocators(memcached_st *ptr,
280
+ memcached_malloc_function mem_malloc,
281
+ memcached_free_function mem_free,
282
+ memcached_realloc_function mem_realloc,
283
+ memcached_calloc_function mem_calloc);
284
+
285
+ LIBMEMCACHED_API
286
+ void memcached_get_memory_allocators(memcached_st *ptr,
287
+ memcached_malloc_function *mem_malloc,
288
+ memcached_free_function *mem_free,
289
+ memcached_realloc_function *mem_realloc,
290
+ memcached_calloc_function *mem_calloc);
291
+
292
+ LIBMEMCACHED_API
293
+ void *memcached_get_user_data(memcached_st *ptr);
294
+ LIBMEMCACHED_API
295
+ void *memcached_set_user_data(memcached_st *ptr, void *data);
296
+
297
+ LIBMEMCACHED_API
298
+ memcached_return run_distribution(memcached_st *ptr);
299
+ #ifdef __cplusplus
300
+ }
301
+ #endif
302
+
303
+
304
+ #endif /* LIBMEMCACHED_MEMCACHED_H */
@@ -0,0 +1,799 @@
1
+ /*
2
+ * Summary: C++ interface for memcached server
3
+ *
4
+ * Copy: See Copyright for the status of this software.
5
+ *
6
+ * Authors: Padraig O'Sullivan <osullivan.padraig@gmail.com>
7
+ * Patrick Galbraith <patg@patg.net>
8
+ */
9
+
10
+ /**
11
+ * @file memcached.hpp
12
+ * @brief Libmemcached C++ interface
13
+ */
14
+
15
+ #ifndef LIBMEMCACHEDPP_H
16
+ #define LIBMEMCACHEDPP_H
17
+
18
+ #include <libmemcached/memcached.h>
19
+
20
+ #include <string.h>
21
+
22
+ #include <string>
23
+ #include <vector>
24
+ #include <map>
25
+
26
+ namespace memcache
27
+ {
28
+
29
+ /**
30
+ * This is the core memcached library (if later, other objects
31
+ * are needed, they will be created from this class).
32
+ */
33
+ class Memcache
34
+ {
35
+ public:
36
+
37
+ Memcache()
38
+ :
39
+ memc(),
40
+ result()
41
+ {
42
+ memcached_create(&memc);
43
+ }
44
+
45
+ Memcache(memcached_st *clone)
46
+ :
47
+ memc(),
48
+ result()
49
+ {
50
+ memcached_clone(&memc, clone);
51
+ }
52
+
53
+ Memcache(const Memcache &rhs)
54
+ :
55
+ memc(),
56
+ result()
57
+ {
58
+ memcached_clone(&memc, const_cast<memcached_st *>(&rhs.getImpl()));
59
+ }
60
+
61
+ ~Memcache()
62
+ {
63
+ memcached_free(&memc);
64
+ }
65
+
66
+ /**
67
+ * Get the internal memcached_st *
68
+ */
69
+ memcached_st &getImpl()
70
+ {
71
+ return memc;
72
+ }
73
+
74
+ /**
75
+ * Get the internal memcached_st *
76
+ */
77
+ const memcached_st &getImpl() const
78
+ {
79
+ return memc;
80
+ }
81
+
82
+ /**
83
+ * Return an error string for the given return structure.
84
+ *
85
+ * @param[in] rc a memcached_return structure
86
+ * @return error string corresponding to given return code in the library.
87
+ */
88
+ const std::string getError(memcached_return rc) const
89
+ {
90
+ /* first parameter to strerror is unused */
91
+ return memcached_strerror(NULL, rc);
92
+ }
93
+
94
+ /**
95
+ * Fetches an individual value from the server. mget() must always
96
+ * be called before using this method.
97
+ *
98
+ * @param[in] key key of object to fetch
99
+ * @param[out] ret_val store returned object in this vector
100
+ * @return a memcached return structure
101
+ */
102
+ memcached_return fetch(std::string &key,
103
+ std::vector<char> &ret_val)
104
+ {
105
+ char ret_key[MEMCACHED_MAX_KEY];
106
+ size_t value_length= 0;
107
+ size_t key_length= 0;
108
+ memcached_return rc;
109
+ uint32_t flags= 0;
110
+ char *value= memcached_fetch(&memc, ret_key, &key_length,
111
+ &value_length, &flags, &rc);
112
+ if (value && ret_val.empty())
113
+ {
114
+ ret_val.reserve(value_length);
115
+ ret_val.assign(value, value + value_length);
116
+ key.assign(ret_key);
117
+ }
118
+ return rc;
119
+ }
120
+
121
+ /**
122
+ * Fetches an individual value from the server.
123
+ *
124
+ * @param[in] key key of object whose value to get
125
+ * @param[out] ret_val object that is retrieved is stored in
126
+ * this vector
127
+ * @return true on success; false otherwise
128
+ */
129
+ bool get(const std::string &key,
130
+ std::vector<char> &ret_val)
131
+ {
132
+ uint32_t flags= 0;
133
+ memcached_return rc;
134
+ size_t value_length= 0;
135
+
136
+ if (key.empty())
137
+ {
138
+ return false;
139
+ }
140
+ char *value= memcached_get(&memc, key.c_str(), key.length(),
141
+ &value_length, &flags, &rc);
142
+ if (value != NULL && ret_val.empty())
143
+ {
144
+ ret_val.reserve(value_length);
145
+ ret_val.assign(value, value + value_length);
146
+ return true;
147
+ }
148
+ return false;
149
+ }
150
+
151
+ /**
152
+ * Fetches an individual from a server which is specified by
153
+ * the master_key parameter that is used for determining which
154
+ * server an object was stored in if key partitioning was
155
+ * used for storage.
156
+ *
157
+ * @param[in] master_key key that specifies server object is stored on
158
+ * @param[in] key key of object whose value to get
159
+ * @param[out] ret_val object that is retrieved is stored in
160
+ * this vector
161
+ * @return true on success; false otherwise
162
+ */
163
+ bool getByKey(const std::string &master_key,
164
+ const std::string &key,
165
+ std::vector<char> &ret_val)
166
+ {
167
+ uint32_t flags= 0;
168
+ memcached_return rc;
169
+ size_t value_length= 0;
170
+
171
+ if (master_key.empty() || key.empty())
172
+ {
173
+ return false;
174
+ }
175
+ char *value= memcached_get_by_key(&memc,
176
+ master_key.c_str(), master_key.length(),
177
+ key.c_str(), key.length(),
178
+ GET_LEN_ARG_UNSPECIFIED,
179
+ &value_length, &flags, &rc);
180
+ if (value)
181
+ {
182
+ ret_val.reserve(value_length);
183
+ ret_val.assign(value, value + value_length);
184
+ return true;
185
+ }
186
+ return false;
187
+ }
188
+
189
+ /**
190
+ * Selects multiple keys at once. This method always
191
+ * works asynchronously.
192
+ *
193
+ * @param[in] keys vector of keys to select
194
+ * @return true if all keys are found
195
+ */
196
+ bool mget(std::vector<std::string> &keys)
197
+ {
198
+ std::vector<const char *> real_keys;
199
+ std::vector<size_t> key_len;
200
+ /*
201
+ * Construct an array which will contain the length
202
+ * of each of the strings in the input vector. Also, to
203
+ * interface with the memcached C API, we need to convert
204
+ * the vector of std::string's to a vector of char *.
205
+ */
206
+ real_keys.reserve(keys.size());
207
+ key_len.reserve(keys.size());
208
+
209
+ std::vector<std::string>::iterator it= keys.begin();
210
+
211
+ while (it != keys.end())
212
+ {
213
+ real_keys.push_back(const_cast<char *>((*it).c_str()));
214
+ key_len.push_back((*it).length());
215
+ ++it;
216
+ }
217
+
218
+ /*
219
+ * If the std::vector of keys is empty then we cannot
220
+ * call memcached_mget as we will get undefined behavior.
221
+ */
222
+ if (! real_keys.empty())
223
+ {
224
+ memcached_return rc= memcached_mget(&memc, &real_keys[0], &key_len[0],
225
+ real_keys.size());
226
+ return (rc == MEMCACHED_SUCCESS);
227
+ }
228
+
229
+ return false;
230
+ }
231
+
232
+ /**
233
+ * Writes an object to the server. If the object already exists, it will
234
+ * overwrite the existing object. This method always returns true
235
+ * when using non-blocking mode unless a network error occurs.
236
+ *
237
+ * @param[in] key key of object to write to server
238
+ * @param[in] value value of object to write to server
239
+ * @param[in] expiration time to keep the object stored in the server for
240
+ * @param[in] flags flags to store with the object
241
+ * @return true on succcess; false otherwise
242
+ */
243
+ bool set(const std::string &key,
244
+ const std::vector<char> &value,
245
+ time_t expiration,
246
+ uint32_t flags)
247
+ {
248
+ if (key.empty() || value.empty())
249
+ {
250
+ return false;
251
+ }
252
+ memcached_return rc= memcached_set(&memc,
253
+ key.c_str(), key.length(),
254
+ &value[0], value.size(),
255
+ expiration, flags);
256
+ return (rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
257
+ }
258
+
259
+ /**
260
+ * Writes an object to a server specified by the master_key parameter.
261
+ * If the object already exists, it will overwrite the existing object.
262
+ *
263
+ * @param[in] master_key key that specifies server to write to
264
+ * @param[in] key key of object to write to server
265
+ * @param[in] value value of object to write to server
266
+ * @param[in] expiration time to keep the object stored in the server for
267
+ * @param[in] flags flags to store with the object
268
+ * @return true on succcess; false otherwise
269
+ */
270
+ bool setByKey(const std::string &master_key,
271
+ const std::string &key,
272
+ const std::vector<char> &value,
273
+ time_t expiration,
274
+ uint32_t flags)
275
+ {
276
+ if (master_key.empty() ||
277
+ key.empty() ||
278
+ value.empty())
279
+ {
280
+ return false;
281
+ }
282
+ memcached_return rc= memcached_set_by_key(&memc, master_key.c_str(),
283
+ master_key.length(),
284
+ key.c_str(), key.length(),
285
+ &value[0], value.size(),
286
+ expiration,
287
+ flags);
288
+ return (rc == MEMCACHED_SUCCESS);
289
+ }
290
+
291
+ /**
292
+ * Writes a list of objects to the server. Objects are specified by
293
+ * 2 vectors - 1 vector of keys and 1 vector of values.
294
+ *
295
+ * @param[in] keys vector of keys of objects to write to server
296
+ * @param[in] values vector of values of objects to write to server
297
+ * @param[in] expiration time to keep the objects stored in server for
298
+ * @param[in] flags flags to store with the objects
299
+ * @return true on success; false otherwise
300
+ */
301
+ bool setAll(std::vector<std::string> &keys,
302
+ std::vector< std::vector<char> *> &values,
303
+ time_t expiration,
304
+ uint32_t flags)
305
+ {
306
+ if (keys.size() != values.size())
307
+ {
308
+ return false;
309
+ }
310
+ bool retval= true;
311
+ std::vector<std::string>::iterator key_it= keys.begin();
312
+ std::vector< std::vector<char> *>::iterator val_it= values.begin();
313
+ while (key_it != keys.end())
314
+ {
315
+ retval= set((*key_it), *(*val_it), expiration, flags);
316
+ if (retval == false)
317
+ {
318
+ return retval;
319
+ }
320
+ ++key_it;
321
+ ++val_it;
322
+ }
323
+ return retval;
324
+ }
325
+
326
+ /**
327
+ * Writes a list of objects to the server. Objects are specified by
328
+ * a map of keys to values.
329
+ *
330
+ * @param[in] key_value_map map of keys and values to store in server
331
+ * @param[in] expiration time to keep the objects stored in server for
332
+ * @param[in] flags flags to store with the objects
333
+ * @return true on success; false otherwise
334
+ */
335
+ bool setAll(std::map<const std::string, std::vector<char> > &key_value_map,
336
+ time_t expiration,
337
+ uint32_t flags)
338
+ {
339
+ if (key_value_map.empty())
340
+ {
341
+ return false;
342
+ }
343
+ bool retval= true;
344
+ std::map<const std::string, std::vector<char> >::iterator it=
345
+ key_value_map.begin();
346
+ while (it != key_value_map.end())
347
+ {
348
+ retval= set(it->first, it->second, expiration, flags);
349
+ if (retval == false)
350
+ {
351
+ return false;
352
+ }
353
+ ++it;
354
+ }
355
+ return true;
356
+ }
357
+
358
+ /**
359
+ * Increment the value of the object associated with the specified
360
+ * key by the offset given. The resulting value is saved in the value
361
+ * parameter.
362
+ *
363
+ * @param[in] key key of object in server whose value to increment
364
+ * @param[in] offset amount to increment object's value by
365
+ * @param[out] value store the result of the increment here
366
+ * @return true on success; false otherwise
367
+ */
368
+ bool increment(const std::string &key, uint32_t offset, uint64_t *value)
369
+ {
370
+ if (key.empty())
371
+ {
372
+ return false;
373
+ }
374
+ memcached_return rc= memcached_increment(&memc, key.c_str(), key.length(),
375
+ offset, value);
376
+ return (rc == MEMCACHED_SUCCESS);
377
+ }
378
+
379
+ /**
380
+ * Decrement the value of the object associated with the specified
381
+ * key by the offset given. The resulting value is saved in the value
382
+ * parameter.
383
+ *
384
+ * @param[in] key key of object in server whose value to decrement
385
+ * @param[in] offset amount to increment object's value by
386
+ * @param[out] value store the result of the decrement here
387
+ * @return true on success; false otherwise
388
+ */
389
+ bool decrement(const std::string &key, uint32_t offset, uint64_t *value)
390
+ {
391
+ if (key.empty())
392
+ {
393
+ return false;
394
+ }
395
+ memcached_return rc= memcached_decrement(&memc, key.c_str(),
396
+ key.length(),
397
+ offset, value);
398
+ return (rc == MEMCACHED_SUCCESS);
399
+ }
400
+
401
+
402
+ /**
403
+ * Add an object with the specified key and value to the server. This
404
+ * function returns false if the object already exists on the server.
405
+ *
406
+ * @param[in] key key of object to add
407
+ * @param[in] value of object to add
408
+ * @return true on success; false otherwise
409
+ */
410
+ bool add(const std::string &key, const std::vector<char> &value)
411
+ {
412
+ if (key.empty() || value.empty())
413
+ {
414
+ return false;
415
+ }
416
+ memcached_return rc= memcached_add(&memc, key.c_str(), key.length(),
417
+ &value[0], value.size(), 0, 0);
418
+ return (rc == MEMCACHED_SUCCESS);
419
+ }
420
+
421
+ /**
422
+ * Add an object with the specified key and value to the server. This
423
+ * function returns false if the object already exists on the server. The
424
+ * server to add the object to is specified by the master_key parameter.
425
+ *
426
+ * @param[in[ master_key key of server to add object to
427
+ * @param[in] key key of object to add
428
+ * @param[in] value of object to add
429
+ * @return true on success; false otherwise
430
+ */
431
+ bool addByKey(const std::string &master_key,
432
+ const std::string &key,
433
+ const std::vector<char> &value)
434
+ {
435
+ if (master_key.empty() ||
436
+ key.empty() ||
437
+ value.empty())
438
+ {
439
+ return false;
440
+ }
441
+ memcached_return rc= memcached_add_by_key(&memc,
442
+ master_key.c_str(),
443
+ master_key.length(),
444
+ key.c_str(),
445
+ key.length(),
446
+ &value[0],
447
+ value.size(),
448
+ 0, 0);
449
+ return (rc == MEMCACHED_SUCCESS);
450
+ }
451
+
452
+ /**
453
+ * Replaces an object on the server. This method only succeeds
454
+ * if the object is already present on the server.
455
+ *
456
+ * @param[in] key key of object to replace
457
+ * @param[in[ value value to replace object with
458
+ * @return true on success; false otherwise
459
+ */
460
+ bool replace(const std::string &key, const std::vector<char> &value)
461
+ {
462
+ if (key.empty() ||
463
+ value.empty())
464
+ {
465
+ return false;
466
+ }
467
+ memcached_return rc= memcached_replace(&memc, key.c_str(), key.length(),
468
+ &value[0], value.size(),
469
+ 0, 0);
470
+ return (rc == MEMCACHED_SUCCESS);
471
+ }
472
+
473
+ /**
474
+ * Replaces an object on the server. This method only succeeds
475
+ * if the object is already present on the server. The server
476
+ * to replace the object on is specified by the master_key param.
477
+ *
478
+ * @param[in] master_key key of server to replace object on
479
+ * @param[in] key key of object to replace
480
+ * @param[in[ value value to replace object with
481
+ * @return true on success; false otherwise
482
+ */
483
+ bool replaceByKey(const std::string &master_key,
484
+ const std::string &key,
485
+ const std::vector<char> &value)
486
+ {
487
+ if (master_key.empty() ||
488
+ key.empty() ||
489
+ value.empty())
490
+ {
491
+ return false;
492
+ }
493
+ memcached_return rc= memcached_replace_by_key(&memc,
494
+ master_key.c_str(),
495
+ master_key.length(),
496
+ key.c_str(),
497
+ key.length(),
498
+ &value[0],
499
+ value.size(),
500
+ 0, 0);
501
+ return (rc == MEMCACHED_SUCCESS);
502
+ }
503
+
504
+ /**
505
+ * Places a segment of data before the last piece of data stored.
506
+ *
507
+ * @param[in] key key of object whose value we will prepend data to
508
+ * @param[in] value data to prepend to object's value
509
+ * @return true on success; false otherwise
510
+ */
511
+ bool prepend(const std::string &key, const std::vector<char> &value)
512
+ {
513
+ if (key.empty() || value.empty())
514
+ {
515
+ return false;
516
+ }
517
+ memcached_return rc= memcached_prepend(&memc, key.c_str(), key.length(),
518
+ &value[0], value.size(), 0, 0);
519
+ return (rc == MEMCACHED_SUCCESS);
520
+ }
521
+
522
+ /**
523
+ * Places a segment of data before the last piece of data stored. The
524
+ * server on which the object where we will be prepending data is stored
525
+ * on is specified by the master_key parameter.
526
+ *
527
+ * @param[in] master_key key of server where object is stored
528
+ * @param[in] key key of object whose value we will prepend data to
529
+ * @param[in] value data to prepend to object's value
530
+ * @return true on success; false otherwise
531
+ */
532
+ bool prependByKey(const std::string &master_key,
533
+ const std::string &key,
534
+ const std::vector<char> &value)
535
+ {
536
+ if (master_key.empty() ||
537
+ key.empty() ||
538
+ value.empty())
539
+ {
540
+ return false;
541
+ }
542
+ memcached_return rc= memcached_prepend_by_key(&memc,
543
+ master_key.c_str(),
544
+ master_key.length(),
545
+ key.c_str(),
546
+ key.length(),
547
+ &value[0],
548
+ value.size(),
549
+ 0,
550
+ 0);
551
+ return (rc == MEMCACHED_SUCCESS);
552
+ }
553
+
554
+ /**
555
+ * Places a segment of data at the end of the last piece of data stored.
556
+ *
557
+ * @param[in] key key of object whose value we will append data to
558
+ * @param[in] value data to append to object's value
559
+ * @return true on success; false otherwise
560
+ */
561
+ bool append(const std::string &key, const std::vector<char> &value)
562
+ {
563
+ if (key.empty() || value.empty())
564
+ {
565
+ return false;
566
+ }
567
+ memcached_return rc= memcached_append(&memc,
568
+ key.c_str(),
569
+ key.length(),
570
+ &value[0],
571
+ value.size(),
572
+ 0, 0);
573
+ return (rc == MEMCACHED_SUCCESS);
574
+ }
575
+
576
+ /**
577
+ * Places a segment of data at the end of the last piece of data stored. The
578
+ * server on which the object where we will be appending data is stored
579
+ * on is specified by the master_key parameter.
580
+ *
581
+ * @param[in] master_key key of server where object is stored
582
+ * @param[in] key key of object whose value we will append data to
583
+ * @param[in] value data to append to object's value
584
+ * @return true on success; false otherwise
585
+ */
586
+ bool appendByKey(const std::string &master_key,
587
+ const std::string &key,
588
+ const std::vector<char> &value)
589
+ {
590
+ if (master_key.empty() ||
591
+ key.empty() ||
592
+ value.empty())
593
+ {
594
+ return false;
595
+ }
596
+ memcached_return rc= memcached_append_by_key(&memc,
597
+ master_key.c_str(),
598
+ master_key.length(),
599
+ key.c_str(),
600
+ key.length(),
601
+ &value[0],
602
+ value.size(),
603
+ 0, 0);
604
+ return (rc == MEMCACHED_SUCCESS);
605
+ }
606
+
607
+ /**
608
+ * Overwrite data in the server as long as the cas_arg value
609
+ * is still the same in the server.
610
+ *
611
+ * @param[in] key key of object in server
612
+ * @param[in] value value to store for object in server
613
+ * @param[in] cas_arg "cas" value
614
+ */
615
+ bool cas(const std::string &key,
616
+ const std::vector<char> &value,
617
+ uint64_t cas_arg)
618
+ {
619
+ if (key.empty() || value.empty())
620
+ {
621
+ return false;
622
+ }
623
+ memcached_return rc= memcached_cas(&memc, key.c_str(), key.length(),
624
+ &value[0], value.size(),
625
+ 0, 0, cas_arg);
626
+ return (rc == MEMCACHED_SUCCESS);
627
+ }
628
+
629
+ /**
630
+ * Overwrite data in the server as long as the cas_arg value
631
+ * is still the same in the server. The server to use is
632
+ * specified by the master_key parameter.
633
+ *
634
+ * @param[in] master_key specifies server to operate on
635
+ * @param[in] key key of object in server
636
+ * @param[in] value value to store for object in server
637
+ * @param[in] cas_arg "cas" value
638
+ */
639
+ bool casByKey(const std::string &master_key,
640
+ const std::string &key,
641
+ const std::vector<char> &value,
642
+ uint64_t cas_arg)
643
+ {
644
+ if (master_key.empty() ||
645
+ key.empty() ||
646
+ value.empty())
647
+ {
648
+ return false;
649
+ }
650
+ memcached_return rc= memcached_cas_by_key(&memc,
651
+ master_key.c_str(),
652
+ master_key.length(),
653
+ key.c_str(),
654
+ key.length(),
655
+ &value[0],
656
+ value.size(),
657
+ 0, 0, cas_arg);
658
+ return (rc == MEMCACHED_SUCCESS);
659
+ }
660
+
661
+ /**
662
+ * Delete an object from the server specified by the key given.
663
+ *
664
+ * @param[in] key key of object to delete
665
+ * @return true on success; false otherwise
666
+ */
667
+ bool remove(const std::string &key)
668
+ {
669
+ if (key.empty())
670
+ {
671
+ return false;
672
+ }
673
+ memcached_return rc= memcached_delete(&memc, key.c_str(), key.length(), 0);
674
+ return (rc == MEMCACHED_SUCCESS);
675
+ }
676
+
677
+ /**
678
+ * Delete an object from the server specified by the key given.
679
+ *
680
+ * @param[in] key key of object to delete
681
+ * @param[in] expiration time to delete the object after
682
+ * @return true on success; false otherwise
683
+ */
684
+ bool remove(const std::string &key,
685
+ time_t expiration)
686
+ {
687
+ if (key.empty())
688
+ {
689
+ return false;
690
+ }
691
+ memcached_return rc= memcached_delete(&memc,
692
+ key.c_str(),
693
+ key.length(),
694
+ expiration);
695
+ return (rc == MEMCACHED_SUCCESS);
696
+ }
697
+
698
+ /**
699
+ * Delete an object from the server specified by the key given.
700
+ *
701
+ * @param[in] master_key specifies server to remove object from
702
+ * @param[in] key key of object to delete
703
+ * @return true on success; false otherwise
704
+ */
705
+ bool removeByKey(const std::string &master_key,
706
+ const std::string &key)
707
+ {
708
+ if (master_key.empty() || key.empty())
709
+ {
710
+ return false;
711
+ }
712
+ memcached_return rc= memcached_delete_by_key(&memc,
713
+ master_key.c_str(),
714
+ master_key.length(),
715
+ key.c_str(),
716
+ key.length(),
717
+ 0);
718
+ return (rc == MEMCACHED_SUCCESS);
719
+ }
720
+
721
+ /**
722
+ * Delete an object from the server specified by the key given.
723
+ *
724
+ * @param[in] master_key specifies server to remove object from
725
+ * @param[in] key key of object to delete
726
+ * @param[in] expiration time to delete the object after
727
+ * @return true on success; false otherwise
728
+ */
729
+ bool removeByKey(const std::string &master_key,
730
+ const std::string &key,
731
+ time_t expiration)
732
+ {
733
+ if (master_key.empty() || key.empty())
734
+ {
735
+ return false;
736
+ }
737
+ memcached_return rc= memcached_delete_by_key(&memc,
738
+ master_key.c_str(),
739
+ master_key.length(),
740
+ key.c_str(),
741
+ key.length(),
742
+ expiration);
743
+ return (rc == MEMCACHED_SUCCESS);
744
+ }
745
+
746
+ /**
747
+ * Wipe the contents of memcached servers.
748
+ *
749
+ * @param[in] expiration time to wait until wiping contents of
750
+ * memcached servers
751
+ * @return true on success; false otherwise
752
+ */
753
+ bool flush(time_t expiration)
754
+ {
755
+ memcached_return rc= memcached_flush(&memc, expiration);
756
+ return (rc == MEMCACHED_SUCCESS);
757
+ }
758
+
759
+ /**
760
+ * Callback function for result sets. It passes the result
761
+ * sets to the list of functions provided.
762
+ *
763
+ * @param[in] callback list of callback functions
764
+ * @param[in] context pointer to memory reference that is
765
+ * supplied to the calling function
766
+ * @param[in] num_of_callbacks number of callback functions
767
+ * @return true on success; false otherwise
768
+ */
769
+ bool fetchExecute(memcached_execute_function *callback,
770
+ void *context,
771
+ unsigned int num_of_callbacks)
772
+ {
773
+ memcached_return rc= memcached_fetch_execute(&memc,
774
+ callback,
775
+ context,
776
+ num_of_callbacks);
777
+ return (rc == MEMCACHED_SUCCESS);
778
+ }
779
+
780
+ /**
781
+ * Get the library version string.
782
+ * @return std::string containing a copy of the library version string.
783
+ */
784
+ const std::string libVersion() const
785
+ {
786
+ const char *ver= memcached_lib_version();
787
+ const std::string version(ver);
788
+ return version;
789
+ }
790
+
791
+ private:
792
+
793
+ memcached_st memc;
794
+ memcached_result_st result;
795
+ };
796
+
797
+ }
798
+
799
+ #endif /* LIBMEMCACHEDPP_H */