couchbase-memcached 1.2.8

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 (539) hide show
  1. data.tar.gz.sig +2 -0
  2. data/BENCHMARKS +134 -0
  3. data/CHANGELOG +127 -0
  4. data/LICENSE +184 -0
  5. data/Manifest +535 -0
  6. data/README +118 -0
  7. data/Rakefile +83 -0
  8. data/TODO +4 -0
  9. data/couchbase-memcached.gemspec +33 -0
  10. data/ext/extconf-make.rb +25 -0
  11. data/ext/extconf.rb +91 -0
  12. data/ext/libmemcached-0.50/AUTHORS +11 -0
  13. data/ext/libmemcached-0.50/COPYING +33 -0
  14. data/ext/libmemcached-0.50/ChangeLog +392 -0
  15. data/ext/libmemcached-0.50/Makefile.am +114 -0
  16. data/ext/libmemcached-0.50/Makefile.in +4232 -0
  17. data/ext/libmemcached-0.50/NEWS +1 -0
  18. data/ext/libmemcached-0.50/README +43 -0
  19. data/ext/libmemcached-0.50/README.FIRST +31 -0
  20. data/ext/libmemcached-0.50/README.win32 +25 -0
  21. data/ext/libmemcached-0.50/THANKS +14 -0
  22. data/ext/libmemcached-0.50/TODO +11 -0
  23. data/ext/libmemcached-0.50/aclocal.m4 +1077 -0
  24. data/ext/libmemcached-0.50/clients/client_options.h +45 -0
  25. data/ext/libmemcached-0.50/clients/execute.cc +131 -0
  26. data/ext/libmemcached-0.50/clients/execute.h +30 -0
  27. data/ext/libmemcached-0.50/clients/generator.cc +96 -0
  28. data/ext/libmemcached-0.50/clients/generator.h +36 -0
  29. data/ext/libmemcached-0.50/clients/include.am +116 -0
  30. data/ext/libmemcached-0.50/clients/memaslap.c +908 -0
  31. data/ext/libmemcached-0.50/clients/memcapable.cc +2094 -0
  32. data/ext/libmemcached-0.50/clients/memcat.cc +242 -0
  33. data/ext/libmemcached-0.50/clients/memcp.cc +317 -0
  34. data/ext/libmemcached-0.50/clients/memdump.cc +183 -0
  35. data/ext/libmemcached-0.50/clients/memerror.cc +102 -0
  36. data/ext/libmemcached-0.50/clients/memflush.cc +154 -0
  37. data/ext/libmemcached-0.50/clients/memparse.cc +68 -0
  38. data/ext/libmemcached-0.50/clients/memrm.cc +177 -0
  39. data/ext/libmemcached-0.50/clients/memslap.cc +495 -0
  40. data/ext/libmemcached-0.50/clients/memstat.cc +349 -0
  41. data/ext/libmemcached-0.50/clients/ms_atomic.h +69 -0
  42. data/ext/libmemcached-0.50/clients/ms_conn.c +3413 -0
  43. data/ext/libmemcached-0.50/clients/ms_conn.h +241 -0
  44. data/ext/libmemcached-0.50/clients/ms_memslap.h +132 -0
  45. data/ext/libmemcached-0.50/clients/ms_setting.c +1068 -0
  46. data/ext/libmemcached-0.50/clients/ms_setting.h +181 -0
  47. data/ext/libmemcached-0.50/clients/ms_sigsegv.c +126 -0
  48. data/ext/libmemcached-0.50/clients/ms_sigsegv.h +34 -0
  49. data/ext/libmemcached-0.50/clients/ms_stats.c +307 -0
  50. data/ext/libmemcached-0.50/clients/ms_stats.h +69 -0
  51. data/ext/libmemcached-0.50/clients/ms_task.c +1114 -0
  52. data/ext/libmemcached-0.50/clients/ms_task.h +94 -0
  53. data/ext/libmemcached-0.50/clients/ms_thread.c +351 -0
  54. data/ext/libmemcached-0.50/clients/ms_thread.h +78 -0
  55. data/ext/libmemcached-0.50/clients/utilities.cc +231 -0
  56. data/ext/libmemcached-0.50/clients/utilities.h +64 -0
  57. data/ext/libmemcached-0.50/config.h.in +647 -0
  58. data/ext/libmemcached-0.50/config/autorun.sh +126 -0
  59. data/ext/libmemcached-0.50/config/compile +143 -0
  60. data/ext/libmemcached-0.50/config/config.guess +1517 -0
  61. data/ext/libmemcached-0.50/config/config.rpath +666 -0
  62. data/ext/libmemcached-0.50/config/config.sub +1760 -0
  63. data/ext/libmemcached-0.50/config/depcomp +630 -0
  64. data/ext/libmemcached-0.50/config/install-sh +520 -0
  65. data/ext/libmemcached-0.50/config/ltmain.sh +9642 -0
  66. data/ext/libmemcached-0.50/config/missing +376 -0
  67. data/ext/libmemcached-0.50/config/pandora-plugin +752 -0
  68. data/ext/libmemcached-0.50/config/uncrustify.cfg +1112 -0
  69. data/ext/libmemcached-0.50/configure +27103 -0
  70. data/ext/libmemcached-0.50/configure.ac +186 -0
  71. data/ext/libmemcached-0.50/docs/conf.py.in +354 -0
  72. data/ext/libmemcached-0.50/docs/include.am +240 -0
  73. data/ext/libmemcached-0.50/docs/man/hashkit_clone.3 +88 -0
  74. data/ext/libmemcached-0.50/docs/man/hashkit_crc32.3 +105 -0
  75. data/ext/libmemcached-0.50/docs/man/hashkit_create.3 +88 -0
  76. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1_32.3 +105 -0
  77. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1_64.3 +105 -0
  78. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1a_32.3 +105 -0
  79. data/ext/libmemcached-0.50/docs/man/hashkit_fnv1a_64.3 +105 -0
  80. data/ext/libmemcached-0.50/docs/man/hashkit_free.3 +88 -0
  81. data/ext/libmemcached-0.50/docs/man/hashkit_functions.3 +105 -0
  82. data/ext/libmemcached-0.50/docs/man/hashkit_hsieh.3 +105 -0
  83. data/ext/libmemcached-0.50/docs/man/hashkit_is_allocated.3 +88 -0
  84. data/ext/libmemcached-0.50/docs/man/hashkit_jenkins.3 +105 -0
  85. data/ext/libmemcached-0.50/docs/man/hashkit_md5.3 +105 -0
  86. data/ext/libmemcached-0.50/docs/man/hashkit_murmur.3 +105 -0
  87. data/ext/libmemcached-0.50/docs/man/hashkit_value.3 +66 -0
  88. data/ext/libmemcached-0.50/docs/man/libhashkit.3 +57 -0
  89. data/ext/libmemcached-0.50/docs/man/libmemcached.3 +208 -0
  90. data/ext/libmemcached-0.50/docs/man/libmemcached_check_configuration.3 +293 -0
  91. data/ext/libmemcached-0.50/docs/man/libmemcached_configuration.3 +293 -0
  92. data/ext/libmemcached-0.50/docs/man/libmemcached_examples.3 +144 -0
  93. data/ext/libmemcached-0.50/docs/man/libmemcachedutil.3 +68 -0
  94. data/ext/libmemcached-0.50/docs/man/memaslap.1 +1222 -0
  95. data/ext/libmemcached-0.50/docs/man/memcached.3 +293 -0
  96. data/ext/libmemcached-0.50/docs/man/memcached_add.3 +132 -0
  97. data/ext/libmemcached-0.50/docs/man/memcached_add_by_key.3 +132 -0
  98. data/ext/libmemcached-0.50/docs/man/memcached_analyze.3 +77 -0
  99. data/ext/libmemcached-0.50/docs/man/memcached_append.3 +111 -0
  100. data/ext/libmemcached-0.50/docs/man/memcached_append_by_key.3 +111 -0
  101. data/ext/libmemcached-0.50/docs/man/memcached_behavior_get.3 +333 -0
  102. data/ext/libmemcached-0.50/docs/man/memcached_behavior_set.3 +333 -0
  103. data/ext/libmemcached-0.50/docs/man/memcached_callback_get.3 +159 -0
  104. data/ext/libmemcached-0.50/docs/man/memcached_callback_set.3 +159 -0
  105. data/ext/libmemcached-0.50/docs/man/memcached_cas.3 +91 -0
  106. data/ext/libmemcached-0.50/docs/man/memcached_cas_by_key.3 +91 -0
  107. data/ext/libmemcached-0.50/docs/man/memcached_clone.3 +99 -0
  108. data/ext/libmemcached-0.50/docs/man/memcached_create.3 +99 -0
  109. data/ext/libmemcached-0.50/docs/man/memcached_decrement.3 +124 -0
  110. data/ext/libmemcached-0.50/docs/man/memcached_decrement_with_initial.3 +124 -0
  111. data/ext/libmemcached-0.50/docs/man/memcached_delete.3 +83 -0
  112. data/ext/libmemcached-0.50/docs/man/memcached_delete_by_key.3 +83 -0
  113. data/ext/libmemcached-0.50/docs/man/memcached_destroy_sasl_auth_data.3 +95 -0
  114. data/ext/libmemcached-0.50/docs/man/memcached_dump.3 +77 -0
  115. data/ext/libmemcached-0.50/docs/man/memcached_fetch.3 +174 -0
  116. data/ext/libmemcached-0.50/docs/man/memcached_fetch_execute.3 +174 -0
  117. data/ext/libmemcached-0.50/docs/man/memcached_fetch_result.3 +174 -0
  118. data/ext/libmemcached-0.50/docs/man/memcached_flush_buffers.3 +72 -0
  119. data/ext/libmemcached-0.50/docs/man/memcached_free.3 +99 -0
  120. data/ext/libmemcached-0.50/docs/man/memcached_generate_hash.3 +85 -0
  121. data/ext/libmemcached-0.50/docs/man/memcached_generate_hash_value.3 +85 -0
  122. data/ext/libmemcached-0.50/docs/man/memcached_get.3 +174 -0
  123. data/ext/libmemcached-0.50/docs/man/memcached_get_by_key.3 +174 -0
  124. data/ext/libmemcached-0.50/docs/man/memcached_get_memory_allocators.3 +111 -0
  125. data/ext/libmemcached-0.50/docs/man/memcached_get_sasl_callbacks.3 +95 -0
  126. data/ext/libmemcached-0.50/docs/man/memcached_get_user_data.3 +79 -0
  127. data/ext/libmemcached-0.50/docs/man/memcached_increment.3 +124 -0
  128. data/ext/libmemcached-0.50/docs/man/memcached_increment_with_initial.3 +124 -0
  129. data/ext/libmemcached-0.50/docs/man/memcached_lib_version.3 +76 -0
  130. data/ext/libmemcached-0.50/docs/man/memcached_mget.3 +174 -0
  131. data/ext/libmemcached-0.50/docs/man/memcached_mget_by_key.3 +174 -0
  132. data/ext/libmemcached-0.50/docs/man/memcached_mget_execute.3 +174 -0
  133. data/ext/libmemcached-0.50/docs/man/memcached_mget_execute_by_key.3 +174 -0
  134. data/ext/libmemcached-0.50/docs/man/memcached_pool_behavior_get.3 +139 -0
  135. data/ext/libmemcached-0.50/docs/man/memcached_pool_behavior_set.3 +139 -0
  136. data/ext/libmemcached-0.50/docs/man/memcached_pool_create.3 +139 -0
  137. data/ext/libmemcached-0.50/docs/man/memcached_pool_destroy.3 +139 -0
  138. data/ext/libmemcached-0.50/docs/man/memcached_pool_pop.3 +139 -0
  139. data/ext/libmemcached-0.50/docs/man/memcached_pool_push.3 +139 -0
  140. data/ext/libmemcached-0.50/docs/man/memcached_pool_st.3 +139 -0
  141. data/ext/libmemcached-0.50/docs/man/memcached_prepend.3 +111 -0
  142. data/ext/libmemcached-0.50/docs/man/memcached_prepend_by_key.3 +111 -0
  143. data/ext/libmemcached-0.50/docs/man/memcached_quit.3 +74 -0
  144. data/ext/libmemcached-0.50/docs/man/memcached_replace.3 +132 -0
  145. data/ext/libmemcached-0.50/docs/man/memcached_replace_by_key.3 +132 -0
  146. data/ext/libmemcached-0.50/docs/man/memcached_sasl_set_auth_data.3 +95 -0
  147. data/ext/libmemcached-0.50/docs/man/memcached_server_add.3 +141 -0
  148. data/ext/libmemcached-0.50/docs/man/memcached_server_count.3 +141 -0
  149. data/ext/libmemcached-0.50/docs/man/memcached_server_cursor.3 +141 -0
  150. data/ext/libmemcached-0.50/docs/man/memcached_server_list.3 +141 -0
  151. data/ext/libmemcached-0.50/docs/man/memcached_server_list_append.3 +111 -0
  152. data/ext/libmemcached-0.50/docs/man/memcached_server_list_count.3 +111 -0
  153. data/ext/libmemcached-0.50/docs/man/memcached_server_list_free.3 +111 -0
  154. data/ext/libmemcached-0.50/docs/man/memcached_server_push.3 +141 -0
  155. data/ext/libmemcached-0.50/docs/man/memcached_servers_parse.3 +111 -0
  156. data/ext/libmemcached-0.50/docs/man/memcached_set.3 +132 -0
  157. data/ext/libmemcached-0.50/docs/man/memcached_set_by_key.3 +132 -0
  158. data/ext/libmemcached-0.50/docs/man/memcached_set_memory_allocators.3 +111 -0
  159. data/ext/libmemcached-0.50/docs/man/memcached_set_sasl_callbacks.3 +95 -0
  160. data/ext/libmemcached-0.50/docs/man/memcached_set_user_data.3 +79 -0
  161. data/ext/libmemcached-0.50/docs/man/memcached_stat.3 +116 -0
  162. data/ext/libmemcached-0.50/docs/man/memcached_stat_execute.3 +116 -0
  163. data/ext/libmemcached-0.50/docs/man/memcached_stat_get_keys.3 +116 -0
  164. data/ext/libmemcached-0.50/docs/man/memcached_stat_get_value.3 +116 -0
  165. data/ext/libmemcached-0.50/docs/man/memcached_stat_servername.3 +116 -0
  166. data/ext/libmemcached-0.50/docs/man/memcached_strerror.3 +69 -0
  167. data/ext/libmemcached-0.50/docs/man/memcached_verbosity.3 +66 -0
  168. data/ext/libmemcached-0.50/docs/man/memcached_version.3 +76 -0
  169. data/ext/libmemcached-0.50/docs/man/memcapable.1 +92 -0
  170. data/ext/libmemcached-0.50/docs/man/memcat.1 +71 -0
  171. data/ext/libmemcached-0.50/docs/man/memcp.1 +77 -0
  172. data/ext/libmemcached-0.50/docs/man/memdump.1 +66 -0
  173. data/ext/libmemcached-0.50/docs/man/memerror.1 +65 -0
  174. data/ext/libmemcached-0.50/docs/man/memflush.1 +73 -0
  175. data/ext/libmemcached-0.50/docs/man/memrm.1 +72 -0
  176. data/ext/libmemcached-0.50/docs/man/memslap.1 +59 -0
  177. data/ext/libmemcached-0.50/docs/man/memstat.1 +70 -0
  178. data/ext/libmemcached-0.50/example/include.am +24 -0
  179. data/ext/libmemcached-0.50/example/interface_v0.c +594 -0
  180. data/ext/libmemcached-0.50/example/interface_v1.c +411 -0
  181. data/ext/libmemcached-0.50/example/memcached_light.c +474 -0
  182. data/ext/libmemcached-0.50/example/memcached_light.h +7 -0
  183. data/ext/libmemcached-0.50/example/storage.c +172 -0
  184. data/ext/libmemcached-0.50/example/storage.h +27 -0
  185. data/ext/libmemcached-0.50/example/storage_innodb.c +535 -0
  186. data/ext/libmemcached-0.50/libhashkit/algorithm.cc +69 -0
  187. data/ext/libmemcached-0.50/libhashkit/algorithm.h +96 -0
  188. data/ext/libmemcached-0.50/libhashkit/behavior.cc +9 -0
  189. data/ext/libmemcached-0.50/libhashkit/behavior.h +26 -0
  190. data/ext/libmemcached-0.50/libhashkit/common.h +33 -0
  191. data/ext/libmemcached-0.50/libhashkit/configure.h.in +19 -0
  192. data/ext/libmemcached-0.50/libhashkit/crc32.cc +86 -0
  193. data/ext/libmemcached-0.50/libhashkit/digest.cc +62 -0
  194. data/ext/libmemcached-0.50/libhashkit/digest.h +30 -0
  195. data/ext/libmemcached-0.50/libhashkit/fnv.cc +75 -0
  196. data/ext/libmemcached-0.50/libhashkit/function.cc +156 -0
  197. data/ext/libmemcached-0.50/libhashkit/function.h +44 -0
  198. data/ext/libmemcached-0.50/libhashkit/hashkit.cc +100 -0
  199. data/ext/libmemcached-0.50/libhashkit/hashkit.h +95 -0
  200. data/ext/libmemcached-0.50/libhashkit/hashkit.hpp +97 -0
  201. data/ext/libmemcached-0.50/libhashkit/hsieh.cc +70 -0
  202. data/ext/libmemcached-0.50/libhashkit/include.am +69 -0
  203. data/ext/libmemcached-0.50/libhashkit/jenkins.cc +214 -0
  204. data/ext/libmemcached-0.50/libhashkit/ketama.cc +164 -0
  205. data/ext/libmemcached-0.50/libhashkit/md5.cc +367 -0
  206. data/ext/libmemcached-0.50/libhashkit/murmur.cc +77 -0
  207. data/ext/libmemcached-0.50/libhashkit/one_at_a_time.cc +34 -0
  208. data/ext/libmemcached-0.50/libhashkit/str_algorithm.cc +58 -0
  209. data/ext/libmemcached-0.50/libhashkit/str_algorithm.h +48 -0
  210. data/ext/libmemcached-0.50/libhashkit/strerror.cc +25 -0
  211. data/ext/libmemcached-0.50/libhashkit/strerror.h +23 -0
  212. data/ext/libmemcached-0.50/libhashkit/types.h +90 -0
  213. data/ext/libmemcached-0.50/libhashkit/visibility.h +48 -0
  214. data/ext/libmemcached-0.50/libmemcached/allocators.cc +119 -0
  215. data/ext/libmemcached-0.50/libmemcached/allocators.h +87 -0
  216. data/ext/libmemcached-0.50/libmemcached/analyze.cc +110 -0
  217. data/ext/libmemcached-0.50/libmemcached/analyze.h +66 -0
  218. data/ext/libmemcached-0.50/libmemcached/array.c +128 -0
  219. data/ext/libmemcached-0.50/libmemcached/array.h +75 -0
  220. data/ext/libmemcached-0.50/libmemcached/auto.cc +383 -0
  221. data/ext/libmemcached-0.50/libmemcached/auto.h +111 -0
  222. data/ext/libmemcached-0.50/libmemcached/basic_string.h +55 -0
  223. data/ext/libmemcached-0.50/libmemcached/behavior.cc +590 -0
  224. data/ext/libmemcached-0.50/libmemcached/behavior.h +86 -0
  225. data/ext/libmemcached-0.50/libmemcached/byteorder.cc +90 -0
  226. data/ext/libmemcached-0.50/libmemcached/byteorder.h +52 -0
  227. data/ext/libmemcached-0.50/libmemcached/callback.cc +160 -0
  228. data/ext/libmemcached-0.50/libmemcached/callback.h +61 -0
  229. data/ext/libmemcached-0.50/libmemcached/common.h +182 -0
  230. data/ext/libmemcached-0.50/libmemcached/configure.h.in +52 -0
  231. data/ext/libmemcached-0.50/libmemcached/connect.cc +626 -0
  232. data/ext/libmemcached-0.50/libmemcached/constants.h +167 -0
  233. data/ext/libmemcached-0.50/libmemcached/delete.cc +266 -0
  234. data/ext/libmemcached-0.50/libmemcached/delete.h +57 -0
  235. data/ext/libmemcached-0.50/libmemcached/do.cc +100 -0
  236. data/ext/libmemcached-0.50/libmemcached/do.hpp +49 -0
  237. data/ext/libmemcached-0.50/libmemcached/dump.cc +107 -0
  238. data/ext/libmemcached-0.50/libmemcached/dump.h +51 -0
  239. data/ext/libmemcached-0.50/libmemcached/error.cc +419 -0
  240. data/ext/libmemcached-0.50/libmemcached/error.h +61 -0
  241. data/ext/libmemcached-0.50/libmemcached/error.hpp +87 -0
  242. data/ext/libmemcached-0.50/libmemcached/exception.hpp +63 -0
  243. data/ext/libmemcached-0.50/libmemcached/fetch.cc +267 -0
  244. data/ext/libmemcached-0.50/libmemcached/fetch.h +53 -0
  245. data/ext/libmemcached-0.50/libmemcached/flush.cc +149 -0
  246. data/ext/libmemcached-0.50/libmemcached/flush.h +49 -0
  247. data/ext/libmemcached-0.50/libmemcached/flush_buffers.cc +66 -0
  248. data/ext/libmemcached-0.50/libmemcached/flush_buffers.h +49 -0
  249. data/ext/libmemcached-0.50/libmemcached/get.cc +842 -0
  250. data/ext/libmemcached-0.50/libmemcached/get.h +135 -0
  251. data/ext/libmemcached-0.50/libmemcached/hash.cc +178 -0
  252. data/ext/libmemcached-0.50/libmemcached/hash.h +68 -0
  253. data/ext/libmemcached-0.50/libmemcached/hosts.cc +516 -0
  254. data/ext/libmemcached-0.50/libmemcached/include.am +183 -0
  255. data/ext/libmemcached-0.50/libmemcached/initialize_query.cc +70 -0
  256. data/ext/libmemcached-0.50/libmemcached/initialize_query.h +51 -0
  257. data/ext/libmemcached-0.50/libmemcached/internal.h +46 -0
  258. data/ext/libmemcached-0.50/libmemcached/io.cc +920 -0
  259. data/ext/libmemcached-0.50/libmemcached/io.h +119 -0
  260. data/ext/libmemcached-0.50/libmemcached/is.h +48 -0
  261. data/ext/libmemcached-0.50/libmemcached/key.cc +23 -0
  262. data/ext/libmemcached-0.50/libmemcached/libmemcached_probes.d +30 -0
  263. data/ext/libmemcached-0.50/libmemcached/libmemcached_probes.h +118 -0
  264. data/ext/libmemcached-0.50/libmemcached/memcached.cc +437 -0
  265. data/ext/libmemcached-0.50/libmemcached/memcached.h +214 -0
  266. data/ext/libmemcached-0.50/libmemcached/memcached.hpp +799 -0
  267. data/ext/libmemcached-0.50/libmemcached/memcached/README.txt +7 -0
  268. data/ext/libmemcached-0.50/libmemcached/memcached/protocol_binary.h +726 -0
  269. data/ext/libmemcached-0.50/libmemcached/memcached/vbucket.h +26 -0
  270. data/ext/libmemcached-0.50/libmemcached/memcached_util.h +44 -0
  271. data/ext/libmemcached-0.50/libmemcached/memory.h +79 -0
  272. data/ext/libmemcached-0.50/libmemcached/options.cc +178 -0
  273. data/ext/libmemcached-0.50/libmemcached/options.h +49 -0
  274. data/ext/libmemcached-0.50/libmemcached/options.hpp +56 -0
  275. data/ext/libmemcached-0.50/libmemcached/options/context.h +151 -0
  276. data/ext/libmemcached-0.50/libmemcached/options/include.am +19 -0
  277. data/ext/libmemcached-0.50/libmemcached/options/parser.am +0 -0
  278. data/ext/libmemcached-0.50/libmemcached/options/parser.cc +2324 -0
  279. data/ext/libmemcached-0.50/libmemcached/options/parser.h +122 -0
  280. data/ext/libmemcached-0.50/libmemcached/options/scanner.cc +3203 -0
  281. data/ext/libmemcached-0.50/libmemcached/options/scanner.h +479 -0
  282. data/ext/libmemcached-0.50/libmemcached/options/server.h +60 -0
  283. data/ext/libmemcached-0.50/libmemcached/options/symbol.h +57 -0
  284. data/ext/libmemcached-0.50/libmemcached/parse.cc +110 -0
  285. data/ext/libmemcached-0.50/libmemcached/parse.h +23 -0
  286. data/ext/libmemcached-0.50/libmemcached/platform.h +56 -0
  287. data/ext/libmemcached-0.50/libmemcached/prefix_key.cc +65 -0
  288. data/ext/libmemcached-0.50/libmemcached/prefix_key.h +49 -0
  289. data/ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.c +963 -0
  290. data/ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.h +40 -0
  291. data/ext/libmemcached-0.50/libmemcached/protocol/binary_handler.c +1121 -0
  292. data/ext/libmemcached-0.50/libmemcached/protocol/binary_handler.h +47 -0
  293. data/ext/libmemcached-0.50/libmemcached/protocol/cache.c +149 -0
  294. data/ext/libmemcached-0.50/libmemcached/protocol/cache.h +116 -0
  295. data/ext/libmemcached-0.50/libmemcached/protocol/callback.h +418 -0
  296. data/ext/libmemcached-0.50/libmemcached/protocol/common.h +163 -0
  297. data/ext/libmemcached-0.50/libmemcached/protocol/include.am +26 -0
  298. data/ext/libmemcached-0.50/libmemcached/protocol/pedantic.c +202 -0
  299. data/ext/libmemcached-0.50/libmemcached/protocol/protocol_handler.c +365 -0
  300. data/ext/libmemcached-0.50/libmemcached/protocol_handler.h +215 -0
  301. data/ext/libmemcached-0.50/libmemcached/purge.cc +90 -0
  302. data/ext/libmemcached-0.50/libmemcached/quit.cc +139 -0
  303. data/ext/libmemcached-0.50/libmemcached/quit.h +55 -0
  304. data/ext/libmemcached-0.50/libmemcached/response.cc +619 -0
  305. data/ext/libmemcached-0.50/libmemcached/response.h +57 -0
  306. data/ext/libmemcached-0.50/libmemcached/result.cc +173 -0
  307. data/ext/libmemcached-0.50/libmemcached/result.h +100 -0
  308. data/ext/libmemcached-0.50/libmemcached/return.h +98 -0
  309. data/ext/libmemcached-0.50/libmemcached/sasl.c +408 -0
  310. data/ext/libmemcached-0.50/libmemcached/sasl.h +86 -0
  311. data/ext/libmemcached-0.50/libmemcached/server.cc +351 -0
  312. data/ext/libmemcached-0.50/libmemcached/server.h +169 -0
  313. data/ext/libmemcached-0.50/libmemcached/server_list.cc +88 -0
  314. data/ext/libmemcached-0.50/libmemcached/server_list.h +77 -0
  315. data/ext/libmemcached-0.50/libmemcached/stats.cc +623 -0
  316. data/ext/libmemcached-0.50/libmemcached/stats.h +96 -0
  317. data/ext/libmemcached-0.50/libmemcached/storage.cc +567 -0
  318. data/ext/libmemcached-0.50/libmemcached/storage.h +133 -0
  319. data/ext/libmemcached-0.50/libmemcached/strerror.cc +189 -0
  320. data/ext/libmemcached-0.50/libmemcached/strerror.h +50 -0
  321. data/ext/libmemcached-0.50/libmemcached/string.cc +253 -0
  322. data/ext/libmemcached-0.50/libmemcached/string.h +121 -0
  323. data/ext/libmemcached-0.50/libmemcached/touch.cc +106 -0
  324. data/ext/libmemcached-0.50/libmemcached/touch.h +59 -0
  325. data/ext/libmemcached-0.50/libmemcached/types.h +117 -0
  326. data/ext/libmemcached-0.50/libmemcached/util.h +40 -0
  327. data/ext/libmemcached-0.50/libmemcached/util/flush.cc +61 -0
  328. data/ext/libmemcached-0.50/libmemcached/util/flush.h +50 -0
  329. data/ext/libmemcached-0.50/libmemcached/util/include.am +34 -0
  330. data/ext/libmemcached-0.50/libmemcached/util/ping.cc +62 -0
  331. data/ext/libmemcached-0.50/libmemcached/util/ping.h +49 -0
  332. data/ext/libmemcached-0.50/libmemcached/util/pool.cc +392 -0
  333. data/ext/libmemcached-0.50/libmemcached/util/pool.h +78 -0
  334. data/ext/libmemcached-0.50/libmemcached/util/version.cc +87 -0
  335. data/ext/libmemcached-0.50/libmemcached/util/version.h +53 -0
  336. data/ext/libmemcached-0.50/libmemcached/verbosity.cc +97 -0
  337. data/ext/libmemcached-0.50/libmemcached/verbosity.h +50 -0
  338. data/ext/libmemcached-0.50/libmemcached/version.cc +214 -0
  339. data/ext/libmemcached-0.50/libmemcached/version.h +52 -0
  340. data/ext/libmemcached-0.50/libmemcached/virtual_bucket.c +118 -0
  341. data/ext/libmemcached-0.50/libmemcached/virtual_bucket.h +59 -0
  342. data/ext/libmemcached-0.50/libmemcached/visibility.h +51 -0
  343. data/ext/libmemcached-0.50/libmemcached/watchpoint.h +110 -0
  344. data/ext/libmemcached-0.50/libtest/callbacks.h +21 -0
  345. data/ext/libmemcached-0.50/libtest/collection.h +19 -0
  346. data/ext/libmemcached-0.50/libtest/common.h +50 -0
  347. data/ext/libmemcached-0.50/libtest/core.h +11 -0
  348. data/ext/libmemcached-0.50/libtest/error.h +18 -0
  349. data/ext/libmemcached-0.50/libtest/failed.h +52 -0
  350. data/ext/libmemcached-0.50/libtest/framework.cc +57 -0
  351. data/ext/libmemcached-0.50/libtest/framework.h +137 -0
  352. data/ext/libmemcached-0.50/libtest/get.h +22 -0
  353. data/ext/libmemcached-0.50/libtest/include.am +52 -0
  354. data/ext/libmemcached-0.50/libtest/runner.h +19 -0
  355. data/ext/libmemcached-0.50/libtest/server.c +355 -0
  356. data/ext/libmemcached-0.50/libtest/server.h +43 -0
  357. data/ext/libmemcached-0.50/libtest/stats.h +30 -0
  358. data/ext/libmemcached-0.50/libtest/strerror.h +14 -0
  359. data/ext/libmemcached-0.50/libtest/test.cc +319 -0
  360. data/ext/libmemcached-0.50/libtest/test.h +162 -0
  361. data/ext/libmemcached-0.50/libtest/test.hpp +46 -0
  362. data/ext/libmemcached-0.50/libtest/visibility.h +69 -0
  363. data/ext/libmemcached-0.50/m4/ac_cxx_header_stdcxx_98.m4 +83 -0
  364. data/ext/libmemcached-0.50/m4/acx_pthread.m4 +271 -0
  365. data/ext/libmemcached-0.50/m4/byteorder.m4 +19 -0
  366. data/ext/libmemcached-0.50/m4/deprecated.m4 +17 -0
  367. data/ext/libmemcached-0.50/m4/eagain.m4 +28 -0
  368. data/ext/libmemcached-0.50/m4/enable_utillib.m4 +16 -0
  369. data/ext/libmemcached-0.50/m4/gettext.m4 +379 -0
  370. data/ext/libmemcached-0.50/m4/hsieh.m4 +18 -0
  371. data/ext/libmemcached-0.50/m4/iconv.m4 +214 -0
  372. data/ext/libmemcached-0.50/m4/lib-ld.m4 +110 -0
  373. data/ext/libmemcached-0.50/m4/lib-link.m4 +767 -0
  374. data/ext/libmemcached-0.50/m4/lib-prefix.m4 +221 -0
  375. data/ext/libmemcached-0.50/m4/libtool.m4 +7851 -0
  376. data/ext/libmemcached-0.50/m4/ltoptions.m4 +369 -0
  377. data/ext/libmemcached-0.50/m4/ltsugar.m4 +123 -0
  378. data/ext/libmemcached-0.50/m4/ltversion.m4 +23 -0
  379. data/ext/libmemcached-0.50/m4/lt~obsolete.m4 +98 -0
  380. data/ext/libmemcached-0.50/m4/memaslap.m4 +9 -0
  381. data/ext/libmemcached-0.50/m4/memcached.m4 +31 -0
  382. data/ext/libmemcached-0.50/m4/murmur.m4 +18 -0
  383. data/ext/libmemcached-0.50/m4/pandora_64bit.m4 +60 -0
  384. data/ext/libmemcached-0.50/m4/pandora_bison.m4 +33 -0
  385. data/ext/libmemcached-0.50/m4/pandora_canonical.m4 +418 -0
  386. data/ext/libmemcached-0.50/m4/pandora_check_compiler_version.m4 +37 -0
  387. data/ext/libmemcached-0.50/m4/pandora_check_cxx_standard.m4 +23 -0
  388. data/ext/libmemcached-0.50/m4/pandora_cinttypes.m4 +39 -0
  389. data/ext/libmemcached-0.50/m4/pandora_clock_gettime.m4 +15 -0
  390. data/ext/libmemcached-0.50/m4/pandora_compile_stdcxx_0x.m4 +103 -0
  391. data/ext/libmemcached-0.50/m4/pandora_cstdint.m4 +38 -0
  392. data/ext/libmemcached-0.50/m4/pandora_cxx_demangle.m4 +27 -0
  393. data/ext/libmemcached-0.50/m4/pandora_enable_dtrace.m4 +60 -0
  394. data/ext/libmemcached-0.50/m4/pandora_ensure_gcc_version.m4 +62 -0
  395. data/ext/libmemcached-0.50/m4/pandora_extensions.m4 +16 -0
  396. data/ext/libmemcached-0.50/m4/pandora_fdatasync.m4 +25 -0
  397. data/ext/libmemcached-0.50/m4/pandora_flex.m4 +33 -0
  398. data/ext/libmemcached-0.50/m4/pandora_have_better_malloc.m4 +66 -0
  399. data/ext/libmemcached-0.50/m4/pandora_have_boost.m4 +93 -0
  400. data/ext/libmemcached-0.50/m4/pandora_have_gcc_atomics.m4 +37 -0
  401. data/ext/libmemcached-0.50/m4/pandora_have_innodb.m4 +41 -0
  402. data/ext/libmemcached-0.50/m4/pandora_have_libaio.m4 +56 -0
  403. data/ext/libmemcached-0.50/m4/pandora_have_libavahi.m4 +41 -0
  404. data/ext/libmemcached-0.50/m4/pandora_have_libbdb.m4 +40 -0
  405. data/ext/libmemcached-0.50/m4/pandora_have_libboost_date_time.m4 +46 -0
  406. data/ext/libmemcached-0.50/m4/pandora_have_libboost_filesystem.m4 +47 -0
  407. data/ext/libmemcached-0.50/m4/pandora_have_libboost_iostreams.m4 +49 -0
  408. data/ext/libmemcached-0.50/m4/pandora_have_libboost_options.m4 +47 -0
  409. data/ext/libmemcached-0.50/m4/pandora_have_libboost_regex.m4 +54 -0
  410. data/ext/libmemcached-0.50/m4/pandora_have_libboost_test.m4 +45 -0
  411. data/ext/libmemcached-0.50/m4/pandora_have_libboost_thread.m4 +54 -0
  412. data/ext/libmemcached-0.50/m4/pandora_have_libcassandra.m4 +44 -0
  413. data/ext/libmemcached-0.50/m4/pandora_have_libcurl.m4 +62 -0
  414. data/ext/libmemcached-0.50/m4/pandora_have_libdl.m4 +51 -0
  415. data/ext/libmemcached-0.50/m4/pandora_have_libdrizzle.m4 +61 -0
  416. data/ext/libmemcached-0.50/m4/pandora_have_libevent.m4 +66 -0
  417. data/ext/libmemcached-0.50/m4/pandora_have_libgearman.m4 +41 -0
  418. data/ext/libmemcached-0.50/m4/pandora_have_libgtest.m4 +47 -0
  419. data/ext/libmemcached-0.50/m4/pandora_have_libhaildb.m4 +43 -0
  420. data/ext/libmemcached-0.50/m4/pandora_have_libhashkit.m4 +42 -0
  421. data/ext/libmemcached-0.50/m4/pandora_have_libinnodb.m4 +64 -0
  422. data/ext/libmemcached-0.50/m4/pandora_have_libldap.m4 +73 -0
  423. data/ext/libmemcached-0.50/m4/pandora_have_libmemcached.m4 +106 -0
  424. data/ext/libmemcached-0.50/m4/pandora_have_libmysqlclient.m4 +146 -0
  425. data/ext/libmemcached-0.50/m4/pandora_have_libndbclient.m4 +80 -0
  426. data/ext/libmemcached-0.50/m4/pandora_have_libpcre.m4 +73 -0
  427. data/ext/libmemcached-0.50/m4/pandora_have_libpq.m4 +46 -0
  428. data/ext/libmemcached-0.50/m4/pandora_have_libpqxx.m4 +44 -0
  429. data/ext/libmemcached-0.50/m4/pandora_have_libsqlite3.m4 +42 -0
  430. data/ext/libmemcached-0.50/m4/pandora_have_libtokyocabinet.m4 +54 -0
  431. data/ext/libmemcached-0.50/m4/pandora_have_libuuid.m4 +55 -0
  432. data/ext/libmemcached-0.50/m4/pandora_have_libvbucket.m4 +40 -0
  433. data/ext/libmemcached-0.50/m4/pandora_have_libxml2.m4 +52 -0
  434. data/ext/libmemcached-0.50/m4/pandora_have_libz.m4 +51 -0
  435. data/ext/libmemcached-0.50/m4/pandora_have_protobuf.m4 +82 -0
  436. data/ext/libmemcached-0.50/m4/pandora_have_sasl.m4 +133 -0
  437. data/ext/libmemcached-0.50/m4/pandora_have_thrift.m4 +45 -0
  438. data/ext/libmemcached-0.50/m4/pandora_header_assert.m4 +23 -0
  439. data/ext/libmemcached-0.50/m4/pandora_header_stdcxx_98.m4 +83 -0
  440. data/ext/libmemcached-0.50/m4/pandora_intltool.m4 +225 -0
  441. data/ext/libmemcached-0.50/m4/pandora_libtool.m4 +25 -0
  442. data/ext/libmemcached-0.50/m4/pandora_optimize.m4 +75 -0
  443. data/ext/libmemcached-0.50/m4/pandora_platform.m4 +117 -0
  444. data/ext/libmemcached-0.50/m4/pandora_plugins.m4 +62 -0
  445. data/ext/libmemcached-0.50/m4/pandora_print_callstack.m4 +61 -0
  446. data/ext/libmemcached-0.50/m4/pandora_pthread.m4 +258 -0
  447. data/ext/libmemcached-0.50/m4/pandora_python3_devel.m4 +236 -0
  448. data/ext/libmemcached-0.50/m4/pandora_run_cpplint.m4 +8 -0
  449. data/ext/libmemcached-0.50/m4/pandora_sasl.m4 +133 -0
  450. data/ext/libmemcached-0.50/m4/pandora_shared_ptr.m4 +59 -0
  451. data/ext/libmemcached-0.50/m4/pandora_stack_direction.m4 +39 -0
  452. data/ext/libmemcached-0.50/m4/pandora_stl_hash.m4 +94 -0
  453. data/ext/libmemcached-0.50/m4/pandora_swig.m4 +39 -0
  454. data/ext/libmemcached-0.50/m4/pandora_use_pipe.m4 +36 -0
  455. data/ext/libmemcached-0.50/m4/pandora_vc_build.m4 +168 -0
  456. data/ext/libmemcached-0.50/m4/pandora_version.m4 +11 -0
  457. data/ext/libmemcached-0.50/m4/pandora_visibility.m4 +75 -0
  458. data/ext/libmemcached-0.50/m4/pandora_warnings.m4 +447 -0
  459. data/ext/libmemcached-0.50/m4/pandora_with_gettext.m4 +44 -0
  460. data/ext/libmemcached-0.50/m4/pandora_with_lua.m4 +55 -0
  461. data/ext/libmemcached-0.50/m4/pandora_with_memcached.m4 +41 -0
  462. data/ext/libmemcached-0.50/m4/pandora_with_perl.m4 +81 -0
  463. data/ext/libmemcached-0.50/m4/pandora_with_php.m4 +56 -0
  464. data/ext/libmemcached-0.50/m4/pandora_with_python.m4 +37 -0
  465. data/ext/libmemcached-0.50/m4/pandora_with_python3.m4 +44 -0
  466. data/ext/libmemcached-0.50/m4/pandora_with_r.m4 +33 -0
  467. data/ext/libmemcached-0.50/m4/pandora_with_ruby.m4 +79 -0
  468. data/ext/libmemcached-0.50/m4/pandora_with_valgrind.m4 +17 -0
  469. data/ext/libmemcached-0.50/m4/pkg.m4 +157 -0
  470. data/ext/libmemcached-0.50/m4/po.m4 +449 -0
  471. data/ext/libmemcached-0.50/m4/progtest.m4 +92 -0
  472. data/ext/libmemcached-0.50/m4/protocol_binary.m4 +36 -0
  473. data/ext/libmemcached-0.50/m4/setsockopt.m4 +73 -0
  474. data/ext/libmemcached-0.50/m4/socket_send_flags.m4 +66 -0
  475. data/ext/libmemcached-0.50/poll/include.am +8 -0
  476. data/ext/libmemcached-0.50/poll/poll.c +77 -0
  477. data/ext/libmemcached-0.50/poll/poll.h +45 -0
  478. data/ext/libmemcached-0.50/support/include.am +11 -0
  479. data/ext/libmemcached-0.50/support/libmemcached-fc.spec.in +105 -0
  480. data/ext/libmemcached-0.50/support/libmemcached.pc.in +10 -0
  481. data/ext/libmemcached-0.50/support/libmemcached.spec.in +281 -0
  482. data/ext/libmemcached-0.50/support/set_benchmark.sh +5 -0
  483. data/ext/libmemcached-0.50/tests/atomsmasher.cc +295 -0
  484. data/ext/libmemcached-0.50/tests/basic.cc +134 -0
  485. data/ext/libmemcached-0.50/tests/basic.h +66 -0
  486. data/ext/libmemcached-0.50/tests/cpp_example.cc +195 -0
  487. data/ext/libmemcached-0.50/tests/deprecated.cc +72 -0
  488. data/ext/libmemcached-0.50/tests/deprecated.h +49 -0
  489. data/ext/libmemcached-0.50/tests/error_conditions.cc +63 -0
  490. data/ext/libmemcached-0.50/tests/error_conditions.h +48 -0
  491. data/ext/libmemcached-0.50/tests/hash_plus.cc +225 -0
  492. data/ext/libmemcached-0.50/tests/hash_results.h +127 -0
  493. data/ext/libmemcached-0.50/tests/hashkit_functions.cc +619 -0
  494. data/ext/libmemcached-0.50/tests/include.am +342 -0
  495. data/ext/libmemcached-0.50/tests/ketama_test_cases.h +121 -0
  496. data/ext/libmemcached-0.50/tests/ketama_test_cases_spy.h +118 -0
  497. data/ext/libmemcached-0.50/tests/libmemcached_world.h +205 -0
  498. data/ext/libmemcached-0.50/tests/mem_functions.cc +6648 -0
  499. data/ext/libmemcached-0.50/tests/mem_udp.cc +510 -0
  500. data/ext/libmemcached-0.50/tests/output_plus.res +5 -0
  501. data/ext/libmemcached-0.50/tests/parser.cc +599 -0
  502. data/ext/libmemcached-0.50/tests/parser.h +109 -0
  503. data/ext/libmemcached-0.50/tests/plus.cpp +240 -0
  504. data/ext/libmemcached-0.50/tests/pool.cc +78 -0
  505. data/ext/libmemcached-0.50/tests/pool.h +49 -0
  506. data/ext/libmemcached-0.50/tests/print.cc +58 -0
  507. data/ext/libmemcached-0.50/tests/print.h +51 -0
  508. data/ext/libmemcached-0.50/tests/replication.cc +333 -0
  509. data/ext/libmemcached-0.50/tests/replication.h +64 -0
  510. data/ext/libmemcached-0.50/tests/start.cc +29 -0
  511. data/ext/libmemcached-0.50/tests/string.cc +174 -0
  512. data/ext/libmemcached-0.50/tests/string.h +67 -0
  513. data/ext/libmemcached-0.50/tests/virtual_buckets.cc +143 -0
  514. data/ext/libmemcached-0.50/tests/virtual_buckets.h +51 -0
  515. data/ext/libmemcached-0.50/win32/include.am +11 -0
  516. data/ext/libmemcached-0.50/win32/wrappers.h +55 -0
  517. data/ext/rlibmemcached.i +263 -0
  518. data/ext/rlibmemcached_wrap.c +16732 -0
  519. data/lib/memcached.rb +32 -0
  520. data/lib/memcached/auth.rb +16 -0
  521. data/lib/memcached/behaviors.rb +77 -0
  522. data/lib/memcached/exceptions.rb +84 -0
  523. data/lib/memcached/experimental.rb +48 -0
  524. data/lib/memcached/memcached.rb +660 -0
  525. data/lib/memcached/rails.rb +133 -0
  526. data/test/profile/benchmark.rb +245 -0
  527. data/test/profile/c_profiler.rb +14 -0
  528. data/test/profile/exercise.rb +185 -0
  529. data/test/profile/rb_profiler.rb +21 -0
  530. data/test/profile/valgrind.rb +10 -0
  531. data/test/setup.rb +30 -0
  532. data/test/teardown.rb +0 -0
  533. data/test/test_helper.rb +19 -0
  534. data/test/unit/binding_test.rb +8 -0
  535. data/test/unit/memcached_experimental_test.rb +274 -0
  536. data/test/unit/memcached_test.rb +1293 -0
  537. data/test/unit/rails_test.rb +122 -0
  538. metadata +650 -0
  539. metadata.gz.sig +0 -0
data/README ADDED
@@ -0,0 +1,118 @@
1
+
2
+ memcached
3
+
4
+ An interface to the libmemcached C client.
5
+
6
+ == License
7
+
8
+ Copyright 2009-2011 Cloudburst, LLC. Licensed under the AFL 3. See the included LICENSE file. Portions copyright 2007-2009 TangentOrg, Brian Aker, licensed under the BSD license, and used with permission.
9
+
10
+ == Features
11
+
12
+ * clean API
13
+ * robust access to all memcached features
14
+ * multiple hashing modes, including consistent hashing
15
+ * ludicrous speed, including optional pipelined IO with no_reply
16
+
17
+ The <b>memcached</b> library wraps the pure-C libmemcached client via SWIG.
18
+
19
+ == Installation
20
+
21
+ You need Ruby 1.8.7 or Ruby 1.9.2. Other versions may work, but are not guaranteed. You also need the libsasl2-dev library, which should be provided through your system's package manager.
22
+
23
+ Install the gem:
24
+ sudo gem install memcached --no-rdoc --no-ri
25
+
26
+ == Usage
27
+
28
+ Start a local networked memcached server:
29
+ $ memcached -p 11211 &
30
+
31
+ Now, in Ruby, require the library and instantiate a Memcached object at a global level:
32
+
33
+ require 'memcached'
34
+ $cache = Memcached.new("localhost:11211")
35
+
36
+ Now you can set things and get things:
37
+
38
+ value = 'hello'
39
+ $cache.set 'test', value
40
+ $cache.get 'test' #=> "hello"
41
+
42
+ You can set with an expiration timeout:
43
+
44
+ value = 'hello'
45
+ $cache.set 'test', value, 1
46
+ sleep(2)
47
+ $cache.get 'test' #=> raises Memcached::NotFound
48
+
49
+ You can get multiple values at once:
50
+
51
+ value = 'hello'
52
+ $cache.set 'test', value
53
+ $cache.set 'test2', value
54
+ $cache.get ['test', 'test2', 'missing']
55
+ #=> {"test" => "hello", "test2" => "hello"}
56
+
57
+ You can set a counter and increment it. Note that you must initialize it with an integer, encoded as an unmarshalled ASCII string:
58
+
59
+ start = 1
60
+ $cache.set 'counter', start.to_s, 0, false
61
+ $cache.increment 'counter' #=> 2
62
+ $cache.increment 'counter' #=> 3
63
+ $cache.get('counter', false).to_i #=> 3
64
+
65
+ You can get some server stats:
66
+
67
+ $cache.stats #=> {..., :bytes_written=>[62], :version=>["1.2.4"] ...}
68
+
69
+ Note that the API is not the same as that of <b>Ruby-MemCache</b> or <b>memcache-client</b>. In particular, <tt>nil</tt> is a valid record value. Memcached#get does not return <tt>nil</tt> on failure, rather it raises <b>Memcached::NotFound</b>. This is consistent with the behavior of memcached itself. For example:
70
+
71
+ $cache.set 'test', nil
72
+ $cache.get 'test' #=> nil
73
+ $cache.delete 'test'
74
+ $cache.get 'test' #=> raises Memcached::NotFound
75
+
76
+ == Pipelining
77
+
78
+ Pipelining updates is extremely effective in <b>memcached</b>, leading to more than 25x write throughput than the default settings. Use the following options to enable it:
79
+
80
+ :no_block => true,
81
+ :buffer_requests => true,
82
+ :noreply => true,
83
+ :binary_protocol => false
84
+
85
+ Currently #append, #prepend, #set, and #delete are pipelined. Note that when you perform a read, all pending writes are flushed to the servers.
86
+
87
+ == Threading
88
+
89
+ <b>memcached</b> is threadsafe, but each thread requires its own Memcached instance. Create a global Memcached, and then call Memcached#clone each time you spawn a thread.
90
+
91
+ thread = Thread.new do
92
+ cache = $cache.clone
93
+ # Perform operations on cache, not $cache
94
+ cache.set 'example', 1
95
+ cache.get 'example'
96
+ end
97
+
98
+ # Join the thread so that exceptions don't get lost
99
+ thread.join
100
+
101
+ == Legacy applications
102
+
103
+ There is a compatibility wrapper for legacy applications called Memcached::Rails.
104
+
105
+ == Benchmarks
106
+
107
+ <b>memcached</b>, correctly configured, is at least twice as fast as <b>memcache-client</b> and <b>dalli</b>. See BENCHMARKS[link:files/BENCHMARKS.html] for details.
108
+
109
+ == Reporting problems
110
+
111
+ The support forum is here[http://github.com/fauna/memcached/issues].
112
+
113
+ Patches and contributions are very welcome. Please note that contributors are required to assign copyright for their additions to Cloudburst, LLC.
114
+
115
+ == Further resources
116
+
117
+ * {Memcached wiki}[http://www.socialtext.net/memcached/index.cgi]
118
+ * {Libmemcached homepage}[http://tangent.org/552/libmemcached.html]
@@ -0,0 +1,83 @@
1
+ require 'psych'
2
+ gem 'echoe', '>= 4.5.6'
3
+ require 'echoe'
4
+
5
+ Echoe.new("couchbase-memcached") do |p|
6
+ p.author = "Evan Weaver"
7
+ p.project = "fauna"
8
+ p.summary = "An interface to the libmemcached C client."
9
+ p.rdoc_pattern = /README|TODO|LICENSE|CHANGELOG|BENCH|COMPAT|exceptions|experimental.rb|behaviors|rails.rb|memcached.rb/
10
+ p.clean_pattern += ["ext/Makefile",
11
+ "ext/bin",
12
+ "ext/include",
13
+ "ext/lib",
14
+ "ext/share",
15
+ "ext/**/Makefile",
16
+ "ext/libmemcached-*/clients/memcat",
17
+ "ext/libmemcached-*/clients/memcp",
18
+ "ext/libmemcached-*/clients/memdump",
19
+ "ext/libmemcached-*/clients/memerror",
20
+ "ext/libmemcached-*/clients/memflush",
21
+ "ext/libmemcached-*/clients/memrm",
22
+ "ext/libmemcached-*/clients/memslap",
23
+ "ext/libmemcached-*/clients/memstat",
24
+ "ext/libmemcached-*/tests/atomsmasher",
25
+ "ext/libmemcached-*/tests/startservers",
26
+ "ext/libmemcached-*/tests/testapp",
27
+ "ext/libmemcached-*/tests/testplus",
28
+ "ext/libmemcached-*/tests/udptest",
29
+ "ext/libmemcached-*/config.h",
30
+ "ext/libmemcached-*/config.log",
31
+ "ext/libmemcached-*/config.status",
32
+ "ext/libmemcached-*/docs/*.[1,3]",
33
+ "ext/libmemcached-*/libmemcached/memcached_configure.h",
34
+ "ext/libmemcached-*/libtool",
35
+ "ext/libmemcached-*/stamp*",
36
+ "ext/libmemcached-*/support/libmemcached.pc",
37
+ "ext/libmemcached-*/support/libmemcached-fc.spec",
38
+ "ext/libmemcached-*/**/*.s[oa]",
39
+ "ext/libmemcached-*/**/*.l[oa]",
40
+ "ext/conftest.dSYM",
41
+ "lib/rlibmemcached*"]
42
+ end
43
+
44
+ task :exceptions do
45
+ $LOAD_PATH << "lib"
46
+ require 'memcached'
47
+ Memcached.constants.sort.each do |const_name|
48
+ const = Memcached.send(:const_get, const_name)
49
+ next if const == Memcached::Success or const == Memcached::Stored
50
+ if const.is_a? Class and const < Memcached::Error
51
+ puts "* Memcached::#{const_name}"
52
+ end
53
+ end
54
+ end
55
+
56
+ task :test_all do
57
+ if !system("rvm use ree-1.8.7-2010.02 && rake clean && rake")
58
+ puts "REE test failed"
59
+ exit(1)
60
+ end
61
+ if !system("rvm use ruby-1.9.2 && rake clean && rake")
62
+ puts "1.9 test failed"
63
+ exit(1)
64
+ end
65
+ end
66
+
67
+ task :prerelease => [:test_all]
68
+
69
+ task :benchmark do
70
+ exec("ruby #{File.dirname(__FILE__)}/test/profile/benchmark.rb")
71
+ end
72
+
73
+ task :rb_profile do
74
+ exec("ruby #{File.dirname(__FILE__)}/test/profile/rb_profiler.rb")
75
+ end
76
+
77
+ task :c_profile do
78
+ exec("ruby #{File.dirname(__FILE__)}/test/profile/c_profiler.rb")
79
+ end
80
+
81
+ task :valgrind do
82
+ exec("ruby #{File.dirname(__FILE__)}/test/profile/valgrind.rb")
83
+ end
data/TODO ADDED
@@ -0,0 +1,4 @@
1
+
2
+ * Verify that DNS lookups are getting cached
3
+ * Check for memory leaks in Valgrind after free callback change
4
+ * Re-run benchmarks
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{couchbase-memcached}
5
+ s.version = "1.2.8"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = [%q{Evan Weaver}]
9
+ s.cert_chain = [%q{/home/avsej/.gem/keys/gem-public_cert.pem}]
10
+ s.date = %q{2011-07-06}
11
+ s.description = %q{An interface to the libmemcached C client.}
12
+ s.email = %q{}
13
+ s.extensions = [%q{ext/extconf.rb}]
14
+ s.extra_rdoc_files = [%q{BENCHMARKS}, %q{CHANGELOG}, %q{LICENSE}, %q{README}, %q{TODO}, %q{ext/libmemcached-0.50/README}, %q{ext/libmemcached-0.50/README.FIRST}, %q{ext/libmemcached-0.50/README.win32}, %q{ext/libmemcached-0.50/TODO}, %q{ext/libmemcached-0.50/libmemcached/memcached/README.txt}, %q{lib/memcached.rb}, %q{lib/memcached/behaviors.rb}, %q{lib/memcached/exceptions.rb}, %q{lib/memcached/experimental.rb}, %q{lib/memcached/memcached.rb}, %q{lib/memcached/rails.rb}]
15
+ s.files = [%q{BENCHMARKS}, %q{CHANGELOG}, %q{LICENSE}, %q{Manifest}, %q{README}, %q{Rakefile}, %q{TODO}, %q{ext/extconf-make.rb}, %q{ext/extconf.rb}, %q{ext/libmemcached-0.50/AUTHORS}, %q{ext/libmemcached-0.50/COPYING}, %q{ext/libmemcached-0.50/ChangeLog}, %q{ext/libmemcached-0.50/Makefile.am}, %q{ext/libmemcached-0.50/Makefile.in}, %q{ext/libmemcached-0.50/NEWS}, %q{ext/libmemcached-0.50/README}, %q{ext/libmemcached-0.50/README.FIRST}, %q{ext/libmemcached-0.50/README.win32}, %q{ext/libmemcached-0.50/THANKS}, %q{ext/libmemcached-0.50/TODO}, %q{ext/libmemcached-0.50/aclocal.m4}, %q{ext/libmemcached-0.50/clients/client_options.h}, %q{ext/libmemcached-0.50/clients/execute.cc}, %q{ext/libmemcached-0.50/clients/execute.h}, %q{ext/libmemcached-0.50/clients/generator.cc}, %q{ext/libmemcached-0.50/clients/generator.h}, %q{ext/libmemcached-0.50/clients/include.am}, %q{ext/libmemcached-0.50/clients/memaslap.c}, %q{ext/libmemcached-0.50/clients/memcapable.cc}, %q{ext/libmemcached-0.50/clients/memcat.cc}, %q{ext/libmemcached-0.50/clients/memcp.cc}, %q{ext/libmemcached-0.50/clients/memdump.cc}, %q{ext/libmemcached-0.50/clients/memerror.cc}, %q{ext/libmemcached-0.50/clients/memflush.cc}, %q{ext/libmemcached-0.50/clients/memparse.cc}, %q{ext/libmemcached-0.50/clients/memrm.cc}, %q{ext/libmemcached-0.50/clients/memslap.cc}, %q{ext/libmemcached-0.50/clients/memstat.cc}, %q{ext/libmemcached-0.50/clients/ms_atomic.h}, %q{ext/libmemcached-0.50/clients/ms_conn.c}, %q{ext/libmemcached-0.50/clients/ms_conn.h}, %q{ext/libmemcached-0.50/clients/ms_memslap.h}, %q{ext/libmemcached-0.50/clients/ms_setting.c}, %q{ext/libmemcached-0.50/clients/ms_setting.h}, %q{ext/libmemcached-0.50/clients/ms_sigsegv.c}, %q{ext/libmemcached-0.50/clients/ms_sigsegv.h}, %q{ext/libmemcached-0.50/clients/ms_stats.c}, %q{ext/libmemcached-0.50/clients/ms_stats.h}, %q{ext/libmemcached-0.50/clients/ms_task.c}, %q{ext/libmemcached-0.50/clients/ms_task.h}, %q{ext/libmemcached-0.50/clients/ms_thread.c}, %q{ext/libmemcached-0.50/clients/ms_thread.h}, %q{ext/libmemcached-0.50/clients/utilities.cc}, %q{ext/libmemcached-0.50/clients/utilities.h}, %q{ext/libmemcached-0.50/config.h.in}, %q{ext/libmemcached-0.50/config/autorun.sh}, %q{ext/libmemcached-0.50/config/compile}, %q{ext/libmemcached-0.50/config/config.guess}, %q{ext/libmemcached-0.50/config/config.rpath}, %q{ext/libmemcached-0.50/config/config.sub}, %q{ext/libmemcached-0.50/config/depcomp}, %q{ext/libmemcached-0.50/config/install-sh}, %q{ext/libmemcached-0.50/config/ltmain.sh}, %q{ext/libmemcached-0.50/config/missing}, %q{ext/libmemcached-0.50/config/pandora-plugin}, %q{ext/libmemcached-0.50/config/uncrustify.cfg}, %q{ext/libmemcached-0.50/configure}, %q{ext/libmemcached-0.50/configure.ac}, %q{ext/libmemcached-0.50/docs/conf.py.in}, %q{ext/libmemcached-0.50/docs/include.am}, %q{ext/libmemcached-0.50/docs/man/hashkit_clone.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_crc32.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_create.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_fnv1_32.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_fnv1_64.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_fnv1a_32.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_fnv1a_64.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_free.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_functions.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_hsieh.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_is_allocated.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_jenkins.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_md5.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_murmur.3}, %q{ext/libmemcached-0.50/docs/man/hashkit_value.3}, %q{ext/libmemcached-0.50/docs/man/libhashkit.3}, %q{ext/libmemcached-0.50/docs/man/libmemcached.3}, %q{ext/libmemcached-0.50/docs/man/libmemcached_check_configuration.3}, %q{ext/libmemcached-0.50/docs/man/libmemcached_configuration.3}, %q{ext/libmemcached-0.50/docs/man/libmemcached_examples.3}, %q{ext/libmemcached-0.50/docs/man/libmemcachedutil.3}, %q{ext/libmemcached-0.50/docs/man/memaslap.1}, %q{ext/libmemcached-0.50/docs/man/memcached.3}, %q{ext/libmemcached-0.50/docs/man/memcached_add.3}, %q{ext/libmemcached-0.50/docs/man/memcached_add_by_key.3}, %q{ext/libmemcached-0.50/docs/man/memcached_analyze.3}, %q{ext/libmemcached-0.50/docs/man/memcached_append.3}, %q{ext/libmemcached-0.50/docs/man/memcached_append_by_key.3}, %q{ext/libmemcached-0.50/docs/man/memcached_behavior_get.3}, %q{ext/libmemcached-0.50/docs/man/memcached_behavior_set.3}, %q{ext/libmemcached-0.50/docs/man/memcached_callback_get.3}, %q{ext/libmemcached-0.50/docs/man/memcached_callback_set.3}, %q{ext/libmemcached-0.50/docs/man/memcached_cas.3}, %q{ext/libmemcached-0.50/docs/man/memcached_cas_by_key.3}, %q{ext/libmemcached-0.50/docs/man/memcached_clone.3}, %q{ext/libmemcached-0.50/docs/man/memcached_create.3}, %q{ext/libmemcached-0.50/docs/man/memcached_decrement.3}, %q{ext/libmemcached-0.50/docs/man/memcached_decrement_with_initial.3}, %q{ext/libmemcached-0.50/docs/man/memcached_delete.3}, %q{ext/libmemcached-0.50/docs/man/memcached_delete_by_key.3}, %q{ext/libmemcached-0.50/docs/man/memcached_destroy_sasl_auth_data.3}, %q{ext/libmemcached-0.50/docs/man/memcached_dump.3}, %q{ext/libmemcached-0.50/docs/man/memcached_fetch.3}, %q{ext/libmemcached-0.50/docs/man/memcached_fetch_execute.3}, %q{ext/libmemcached-0.50/docs/man/memcached_fetch_result.3}, %q{ext/libmemcached-0.50/docs/man/memcached_flush_buffers.3}, %q{ext/libmemcached-0.50/docs/man/memcached_free.3}, %q{ext/libmemcached-0.50/docs/man/memcached_generate_hash.3}, %q{ext/libmemcached-0.50/docs/man/memcached_generate_hash_value.3}, %q{ext/libmemcached-0.50/docs/man/memcached_get.3}, %q{ext/libmemcached-0.50/docs/man/memcached_get_by_key.3}, %q{ext/libmemcached-0.50/docs/man/memcached_get_memory_allocators.3}, %q{ext/libmemcached-0.50/docs/man/memcached_get_sasl_callbacks.3}, %q{ext/libmemcached-0.50/docs/man/memcached_get_user_data.3}, %q{ext/libmemcached-0.50/docs/man/memcached_increment.3}, %q{ext/libmemcached-0.50/docs/man/memcached_increment_with_initial.3}, %q{ext/libmemcached-0.50/docs/man/memcached_lib_version.3}, %q{ext/libmemcached-0.50/docs/man/memcached_mget.3}, %q{ext/libmemcached-0.50/docs/man/memcached_mget_by_key.3}, %q{ext/libmemcached-0.50/docs/man/memcached_mget_execute.3}, %q{ext/libmemcached-0.50/docs/man/memcached_mget_execute_by_key.3}, %q{ext/libmemcached-0.50/docs/man/memcached_pool_behavior_get.3}, %q{ext/libmemcached-0.50/docs/man/memcached_pool_behavior_set.3}, %q{ext/libmemcached-0.50/docs/man/memcached_pool_create.3}, %q{ext/libmemcached-0.50/docs/man/memcached_pool_destroy.3}, %q{ext/libmemcached-0.50/docs/man/memcached_pool_pop.3}, %q{ext/libmemcached-0.50/docs/man/memcached_pool_push.3}, %q{ext/libmemcached-0.50/docs/man/memcached_pool_st.3}, %q{ext/libmemcached-0.50/docs/man/memcached_prepend.3}, %q{ext/libmemcached-0.50/docs/man/memcached_prepend_by_key.3}, %q{ext/libmemcached-0.50/docs/man/memcached_quit.3}, %q{ext/libmemcached-0.50/docs/man/memcached_replace.3}, %q{ext/libmemcached-0.50/docs/man/memcached_replace_by_key.3}, %q{ext/libmemcached-0.50/docs/man/memcached_sasl_set_auth_data.3}, %q{ext/libmemcached-0.50/docs/man/memcached_server_add.3}, %q{ext/libmemcached-0.50/docs/man/memcached_server_count.3}, %q{ext/libmemcached-0.50/docs/man/memcached_server_cursor.3}, %q{ext/libmemcached-0.50/docs/man/memcached_server_list.3}, %q{ext/libmemcached-0.50/docs/man/memcached_server_list_append.3}, %q{ext/libmemcached-0.50/docs/man/memcached_server_list_count.3}, %q{ext/libmemcached-0.50/docs/man/memcached_server_list_free.3}, %q{ext/libmemcached-0.50/docs/man/memcached_server_push.3}, %q{ext/libmemcached-0.50/docs/man/memcached_servers_parse.3}, %q{ext/libmemcached-0.50/docs/man/memcached_set.3}, %q{ext/libmemcached-0.50/docs/man/memcached_set_by_key.3}, %q{ext/libmemcached-0.50/docs/man/memcached_set_memory_allocators.3}, %q{ext/libmemcached-0.50/docs/man/memcached_set_sasl_callbacks.3}, %q{ext/libmemcached-0.50/docs/man/memcached_set_user_data.3}, %q{ext/libmemcached-0.50/docs/man/memcached_stat.3}, %q{ext/libmemcached-0.50/docs/man/memcached_stat_execute.3}, %q{ext/libmemcached-0.50/docs/man/memcached_stat_get_keys.3}, %q{ext/libmemcached-0.50/docs/man/memcached_stat_get_value.3}, %q{ext/libmemcached-0.50/docs/man/memcached_stat_servername.3}, %q{ext/libmemcached-0.50/docs/man/memcached_strerror.3}, %q{ext/libmemcached-0.50/docs/man/memcached_verbosity.3}, %q{ext/libmemcached-0.50/docs/man/memcached_version.3}, %q{ext/libmemcached-0.50/docs/man/memcapable.1}, %q{ext/libmemcached-0.50/docs/man/memcat.1}, %q{ext/libmemcached-0.50/docs/man/memcp.1}, %q{ext/libmemcached-0.50/docs/man/memdump.1}, %q{ext/libmemcached-0.50/docs/man/memerror.1}, %q{ext/libmemcached-0.50/docs/man/memflush.1}, %q{ext/libmemcached-0.50/docs/man/memrm.1}, %q{ext/libmemcached-0.50/docs/man/memslap.1}, %q{ext/libmemcached-0.50/docs/man/memstat.1}, %q{ext/libmemcached-0.50/example/include.am}, %q{ext/libmemcached-0.50/example/interface_v0.c}, %q{ext/libmemcached-0.50/example/interface_v1.c}, %q{ext/libmemcached-0.50/example/memcached_light.c}, %q{ext/libmemcached-0.50/example/memcached_light.h}, %q{ext/libmemcached-0.50/example/storage.c}, %q{ext/libmemcached-0.50/example/storage.h}, %q{ext/libmemcached-0.50/example/storage_innodb.c}, %q{ext/libmemcached-0.50/libhashkit/algorithm.cc}, %q{ext/libmemcached-0.50/libhashkit/algorithm.h}, %q{ext/libmemcached-0.50/libhashkit/behavior.cc}, %q{ext/libmemcached-0.50/libhashkit/behavior.h}, %q{ext/libmemcached-0.50/libhashkit/common.h}, %q{ext/libmemcached-0.50/libhashkit/configure.h.in}, %q{ext/libmemcached-0.50/libhashkit/crc32.cc}, %q{ext/libmemcached-0.50/libhashkit/digest.cc}, %q{ext/libmemcached-0.50/libhashkit/digest.h}, %q{ext/libmemcached-0.50/libhashkit/fnv.cc}, %q{ext/libmemcached-0.50/libhashkit/function.cc}, %q{ext/libmemcached-0.50/libhashkit/function.h}, %q{ext/libmemcached-0.50/libhashkit/hashkit.cc}, %q{ext/libmemcached-0.50/libhashkit/hashkit.h}, %q{ext/libmemcached-0.50/libhashkit/hashkit.hpp}, %q{ext/libmemcached-0.50/libhashkit/hsieh.cc}, %q{ext/libmemcached-0.50/libhashkit/include.am}, %q{ext/libmemcached-0.50/libhashkit/jenkins.cc}, %q{ext/libmemcached-0.50/libhashkit/ketama.cc}, %q{ext/libmemcached-0.50/libhashkit/md5.cc}, %q{ext/libmemcached-0.50/libhashkit/murmur.cc}, %q{ext/libmemcached-0.50/libhashkit/one_at_a_time.cc}, %q{ext/libmemcached-0.50/libhashkit/str_algorithm.cc}, %q{ext/libmemcached-0.50/libhashkit/str_algorithm.h}, %q{ext/libmemcached-0.50/libhashkit/strerror.cc}, %q{ext/libmemcached-0.50/libhashkit/strerror.h}, %q{ext/libmemcached-0.50/libhashkit/types.h}, %q{ext/libmemcached-0.50/libhashkit/visibility.h}, %q{ext/libmemcached-0.50/libmemcached/allocators.cc}, %q{ext/libmemcached-0.50/libmemcached/allocators.h}, %q{ext/libmemcached-0.50/libmemcached/analyze.cc}, %q{ext/libmemcached-0.50/libmemcached/analyze.h}, %q{ext/libmemcached-0.50/libmemcached/array.c}, %q{ext/libmemcached-0.50/libmemcached/array.h}, %q{ext/libmemcached-0.50/libmemcached/auto.cc}, %q{ext/libmemcached-0.50/libmemcached/auto.h}, %q{ext/libmemcached-0.50/libmemcached/basic_string.h}, %q{ext/libmemcached-0.50/libmemcached/behavior.cc}, %q{ext/libmemcached-0.50/libmemcached/behavior.h}, %q{ext/libmemcached-0.50/libmemcached/byteorder.cc}, %q{ext/libmemcached-0.50/libmemcached/byteorder.h}, %q{ext/libmemcached-0.50/libmemcached/callback.cc}, %q{ext/libmemcached-0.50/libmemcached/callback.h}, %q{ext/libmemcached-0.50/libmemcached/common.h}, %q{ext/libmemcached-0.50/libmemcached/configure.h.in}, %q{ext/libmemcached-0.50/libmemcached/connect.cc}, %q{ext/libmemcached-0.50/libmemcached/constants.h}, %q{ext/libmemcached-0.50/libmemcached/delete.cc}, %q{ext/libmemcached-0.50/libmemcached/delete.h}, %q{ext/libmemcached-0.50/libmemcached/do.cc}, %q{ext/libmemcached-0.50/libmemcached/do.hpp}, %q{ext/libmemcached-0.50/libmemcached/dump.cc}, %q{ext/libmemcached-0.50/libmemcached/dump.h}, %q{ext/libmemcached-0.50/libmemcached/error.cc}, %q{ext/libmemcached-0.50/libmemcached/error.h}, %q{ext/libmemcached-0.50/libmemcached/error.hpp}, %q{ext/libmemcached-0.50/libmemcached/exception.hpp}, %q{ext/libmemcached-0.50/libmemcached/fetch.cc}, %q{ext/libmemcached-0.50/libmemcached/fetch.h}, %q{ext/libmemcached-0.50/libmemcached/flush.cc}, %q{ext/libmemcached-0.50/libmemcached/flush.h}, %q{ext/libmemcached-0.50/libmemcached/flush_buffers.cc}, %q{ext/libmemcached-0.50/libmemcached/flush_buffers.h}, %q{ext/libmemcached-0.50/libmemcached/get.cc}, %q{ext/libmemcached-0.50/libmemcached/get.h}, %q{ext/libmemcached-0.50/libmemcached/hash.cc}, %q{ext/libmemcached-0.50/libmemcached/hash.h}, %q{ext/libmemcached-0.50/libmemcached/hosts.cc}, %q{ext/libmemcached-0.50/libmemcached/include.am}, %q{ext/libmemcached-0.50/libmemcached/initialize_query.cc}, %q{ext/libmemcached-0.50/libmemcached/initialize_query.h}, %q{ext/libmemcached-0.50/libmemcached/internal.h}, %q{ext/libmemcached-0.50/libmemcached/io.cc}, %q{ext/libmemcached-0.50/libmemcached/io.h}, %q{ext/libmemcached-0.50/libmemcached/is.h}, %q{ext/libmemcached-0.50/libmemcached/key.cc}, %q{ext/libmemcached-0.50/libmemcached/libmemcached_probes.d}, %q{ext/libmemcached-0.50/libmemcached/libmemcached_probes.h}, %q{ext/libmemcached-0.50/libmemcached/memcached.cc}, %q{ext/libmemcached-0.50/libmemcached/memcached.h}, %q{ext/libmemcached-0.50/libmemcached/memcached.hpp}, %q{ext/libmemcached-0.50/libmemcached/memcached/README.txt}, %q{ext/libmemcached-0.50/libmemcached/memcached/protocol_binary.h}, %q{ext/libmemcached-0.50/libmemcached/memcached/vbucket.h}, %q{ext/libmemcached-0.50/libmemcached/memcached_util.h}, %q{ext/libmemcached-0.50/libmemcached/memory.h}, %q{ext/libmemcached-0.50/libmemcached/options.cc}, %q{ext/libmemcached-0.50/libmemcached/options.h}, %q{ext/libmemcached-0.50/libmemcached/options.hpp}, %q{ext/libmemcached-0.50/libmemcached/options/context.h}, %q{ext/libmemcached-0.50/libmemcached/options/include.am}, %q{ext/libmemcached-0.50/libmemcached/options/parser.am}, %q{ext/libmemcached-0.50/libmemcached/options/parser.cc}, %q{ext/libmemcached-0.50/libmemcached/options/parser.h}, %q{ext/libmemcached-0.50/libmemcached/options/scanner.cc}, %q{ext/libmemcached-0.50/libmemcached/options/scanner.h}, %q{ext/libmemcached-0.50/libmemcached/options/server.h}, %q{ext/libmemcached-0.50/libmemcached/options/symbol.h}, %q{ext/libmemcached-0.50/libmemcached/parse.cc}, %q{ext/libmemcached-0.50/libmemcached/parse.h}, %q{ext/libmemcached-0.50/libmemcached/platform.h}, %q{ext/libmemcached-0.50/libmemcached/prefix_key.cc}, %q{ext/libmemcached-0.50/libmemcached/prefix_key.h}, %q{ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.c}, %q{ext/libmemcached-0.50/libmemcached/protocol/ascii_handler.h}, %q{ext/libmemcached-0.50/libmemcached/protocol/binary_handler.c}, %q{ext/libmemcached-0.50/libmemcached/protocol/binary_handler.h}, %q{ext/libmemcached-0.50/libmemcached/protocol/cache.c}, %q{ext/libmemcached-0.50/libmemcached/protocol/cache.h}, %q{ext/libmemcached-0.50/libmemcached/protocol/callback.h}, %q{ext/libmemcached-0.50/libmemcached/protocol/common.h}, %q{ext/libmemcached-0.50/libmemcached/protocol/include.am}, %q{ext/libmemcached-0.50/libmemcached/protocol/pedantic.c}, %q{ext/libmemcached-0.50/libmemcached/protocol/protocol_handler.c}, %q{ext/libmemcached-0.50/libmemcached/protocol_handler.h}, %q{ext/libmemcached-0.50/libmemcached/purge.cc}, %q{ext/libmemcached-0.50/libmemcached/quit.cc}, %q{ext/libmemcached-0.50/libmemcached/quit.h}, %q{ext/libmemcached-0.50/libmemcached/response.cc}, %q{ext/libmemcached-0.50/libmemcached/response.h}, %q{ext/libmemcached-0.50/libmemcached/result.cc}, %q{ext/libmemcached-0.50/libmemcached/result.h}, %q{ext/libmemcached-0.50/libmemcached/return.h}, %q{ext/libmemcached-0.50/libmemcached/sasl.c}, %q{ext/libmemcached-0.50/libmemcached/sasl.h}, %q{ext/libmemcached-0.50/libmemcached/server.cc}, %q{ext/libmemcached-0.50/libmemcached/server.h}, %q{ext/libmemcached-0.50/libmemcached/server_list.cc}, %q{ext/libmemcached-0.50/libmemcached/server_list.h}, %q{ext/libmemcached-0.50/libmemcached/stats.cc}, %q{ext/libmemcached-0.50/libmemcached/stats.h}, %q{ext/libmemcached-0.50/libmemcached/storage.cc}, %q{ext/libmemcached-0.50/libmemcached/storage.h}, %q{ext/libmemcached-0.50/libmemcached/strerror.cc}, %q{ext/libmemcached-0.50/libmemcached/strerror.h}, %q{ext/libmemcached-0.50/libmemcached/string.cc}, %q{ext/libmemcached-0.50/libmemcached/string.h}, %q{ext/libmemcached-0.50/libmemcached/touch.cc}, %q{ext/libmemcached-0.50/libmemcached/touch.h}, %q{ext/libmemcached-0.50/libmemcached/types.h}, %q{ext/libmemcached-0.50/libmemcached/util.h}, %q{ext/libmemcached-0.50/libmemcached/util/flush.cc}, %q{ext/libmemcached-0.50/libmemcached/util/flush.h}, %q{ext/libmemcached-0.50/libmemcached/util/include.am}, %q{ext/libmemcached-0.50/libmemcached/util/ping.cc}, %q{ext/libmemcached-0.50/libmemcached/util/ping.h}, %q{ext/libmemcached-0.50/libmemcached/util/pool.cc}, %q{ext/libmemcached-0.50/libmemcached/util/pool.h}, %q{ext/libmemcached-0.50/libmemcached/util/version.cc}, %q{ext/libmemcached-0.50/libmemcached/util/version.h}, %q{ext/libmemcached-0.50/libmemcached/verbosity.cc}, %q{ext/libmemcached-0.50/libmemcached/verbosity.h}, %q{ext/libmemcached-0.50/libmemcached/version.cc}, %q{ext/libmemcached-0.50/libmemcached/version.h}, %q{ext/libmemcached-0.50/libmemcached/virtual_bucket.c}, %q{ext/libmemcached-0.50/libmemcached/virtual_bucket.h}, %q{ext/libmemcached-0.50/libmemcached/visibility.h}, %q{ext/libmemcached-0.50/libmemcached/watchpoint.h}, %q{ext/libmemcached-0.50/libtest/callbacks.h}, %q{ext/libmemcached-0.50/libtest/collection.h}, %q{ext/libmemcached-0.50/libtest/common.h}, %q{ext/libmemcached-0.50/libtest/core.h}, %q{ext/libmemcached-0.50/libtest/error.h}, %q{ext/libmemcached-0.50/libtest/failed.h}, %q{ext/libmemcached-0.50/libtest/framework.cc}, %q{ext/libmemcached-0.50/libtest/framework.h}, %q{ext/libmemcached-0.50/libtest/get.h}, %q{ext/libmemcached-0.50/libtest/include.am}, %q{ext/libmemcached-0.50/libtest/runner.h}, %q{ext/libmemcached-0.50/libtest/server.c}, %q{ext/libmemcached-0.50/libtest/server.h}, %q{ext/libmemcached-0.50/libtest/stats.h}, %q{ext/libmemcached-0.50/libtest/strerror.h}, %q{ext/libmemcached-0.50/libtest/test.cc}, %q{ext/libmemcached-0.50/libtest/test.h}, %q{ext/libmemcached-0.50/libtest/test.hpp}, %q{ext/libmemcached-0.50/libtest/visibility.h}, %q{ext/libmemcached-0.50/m4/ac_cxx_header_stdcxx_98.m4}, %q{ext/libmemcached-0.50/m4/acx_pthread.m4}, %q{ext/libmemcached-0.50/m4/byteorder.m4}, %q{ext/libmemcached-0.50/m4/deprecated.m4}, %q{ext/libmemcached-0.50/m4/eagain.m4}, %q{ext/libmemcached-0.50/m4/enable_utillib.m4}, %q{ext/libmemcached-0.50/m4/gettext.m4}, %q{ext/libmemcached-0.50/m4/hsieh.m4}, %q{ext/libmemcached-0.50/m4/iconv.m4}, %q{ext/libmemcached-0.50/m4/lib-ld.m4}, %q{ext/libmemcached-0.50/m4/lib-link.m4}, %q{ext/libmemcached-0.50/m4/lib-prefix.m4}, %q{ext/libmemcached-0.50/m4/libtool.m4}, %q{ext/libmemcached-0.50/m4/ltoptions.m4}, %q{ext/libmemcached-0.50/m4/ltsugar.m4}, %q{ext/libmemcached-0.50/m4/ltversion.m4}, %q{ext/libmemcached-0.50/m4/lt~obsolete.m4}, %q{ext/libmemcached-0.50/m4/memaslap.m4}, %q{ext/libmemcached-0.50/m4/memcached.m4}, %q{ext/libmemcached-0.50/m4/murmur.m4}, %q{ext/libmemcached-0.50/m4/pandora_64bit.m4}, %q{ext/libmemcached-0.50/m4/pandora_bison.m4}, %q{ext/libmemcached-0.50/m4/pandora_canonical.m4}, %q{ext/libmemcached-0.50/m4/pandora_check_compiler_version.m4}, %q{ext/libmemcached-0.50/m4/pandora_check_cxx_standard.m4}, %q{ext/libmemcached-0.50/m4/pandora_cinttypes.m4}, %q{ext/libmemcached-0.50/m4/pandora_clock_gettime.m4}, %q{ext/libmemcached-0.50/m4/pandora_compile_stdcxx_0x.m4}, %q{ext/libmemcached-0.50/m4/pandora_cstdint.m4}, %q{ext/libmemcached-0.50/m4/pandora_cxx_demangle.m4}, %q{ext/libmemcached-0.50/m4/pandora_enable_dtrace.m4}, %q{ext/libmemcached-0.50/m4/pandora_ensure_gcc_version.m4}, %q{ext/libmemcached-0.50/m4/pandora_extensions.m4}, %q{ext/libmemcached-0.50/m4/pandora_fdatasync.m4}, %q{ext/libmemcached-0.50/m4/pandora_flex.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_better_malloc.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_boost.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_gcc_atomics.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_innodb.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libaio.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libavahi.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libbdb.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libboost_date_time.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libboost_filesystem.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libboost_iostreams.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libboost_options.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libboost_regex.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libboost_test.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libboost_thread.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libcassandra.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libcurl.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libdl.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libdrizzle.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libevent.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libgearman.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libgtest.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libhaildb.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libhashkit.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libinnodb.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libldap.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libmemcached.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libmysqlclient.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libndbclient.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libpcre.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libpq.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libpqxx.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libsqlite3.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libtokyocabinet.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libuuid.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libvbucket.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libxml2.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_libz.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_protobuf.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_sasl.m4}, %q{ext/libmemcached-0.50/m4/pandora_have_thrift.m4}, %q{ext/libmemcached-0.50/m4/pandora_header_assert.m4}, %q{ext/libmemcached-0.50/m4/pandora_header_stdcxx_98.m4}, %q{ext/libmemcached-0.50/m4/pandora_intltool.m4}, %q{ext/libmemcached-0.50/m4/pandora_libtool.m4}, %q{ext/libmemcached-0.50/m4/pandora_optimize.m4}, %q{ext/libmemcached-0.50/m4/pandora_platform.m4}, %q{ext/libmemcached-0.50/m4/pandora_plugins.m4}, %q{ext/libmemcached-0.50/m4/pandora_print_callstack.m4}, %q{ext/libmemcached-0.50/m4/pandora_pthread.m4}, %q{ext/libmemcached-0.50/m4/pandora_python3_devel.m4}, %q{ext/libmemcached-0.50/m4/pandora_run_cpplint.m4}, %q{ext/libmemcached-0.50/m4/pandora_sasl.m4}, %q{ext/libmemcached-0.50/m4/pandora_shared_ptr.m4}, %q{ext/libmemcached-0.50/m4/pandora_stack_direction.m4}, %q{ext/libmemcached-0.50/m4/pandora_stl_hash.m4}, %q{ext/libmemcached-0.50/m4/pandora_swig.m4}, %q{ext/libmemcached-0.50/m4/pandora_use_pipe.m4}, %q{ext/libmemcached-0.50/m4/pandora_vc_build.m4}, %q{ext/libmemcached-0.50/m4/pandora_version.m4}, %q{ext/libmemcached-0.50/m4/pandora_visibility.m4}, %q{ext/libmemcached-0.50/m4/pandora_warnings.m4}, %q{ext/libmemcached-0.50/m4/pandora_with_gettext.m4}, %q{ext/libmemcached-0.50/m4/pandora_with_lua.m4}, %q{ext/libmemcached-0.50/m4/pandora_with_memcached.m4}, %q{ext/libmemcached-0.50/m4/pandora_with_perl.m4}, %q{ext/libmemcached-0.50/m4/pandora_with_php.m4}, %q{ext/libmemcached-0.50/m4/pandora_with_python.m4}, %q{ext/libmemcached-0.50/m4/pandora_with_python3.m4}, %q{ext/libmemcached-0.50/m4/pandora_with_r.m4}, %q{ext/libmemcached-0.50/m4/pandora_with_ruby.m4}, %q{ext/libmemcached-0.50/m4/pandora_with_valgrind.m4}, %q{ext/libmemcached-0.50/m4/pkg.m4}, %q{ext/libmemcached-0.50/m4/po.m4}, %q{ext/libmemcached-0.50/m4/progtest.m4}, %q{ext/libmemcached-0.50/m4/protocol_binary.m4}, %q{ext/libmemcached-0.50/m4/setsockopt.m4}, %q{ext/libmemcached-0.50/m4/socket_send_flags.m4}, %q{ext/libmemcached-0.50/poll/include.am}, %q{ext/libmemcached-0.50/poll/poll.c}, %q{ext/libmemcached-0.50/poll/poll.h}, %q{ext/libmemcached-0.50/support/include.am}, %q{ext/libmemcached-0.50/support/libmemcached-fc.spec.in}, %q{ext/libmemcached-0.50/support/libmemcached.pc.in}, %q{ext/libmemcached-0.50/support/libmemcached.spec.in}, %q{ext/libmemcached-0.50/support/set_benchmark.sh}, %q{ext/libmemcached-0.50/tests/atomsmasher.cc}, %q{ext/libmemcached-0.50/tests/basic.cc}, %q{ext/libmemcached-0.50/tests/basic.h}, %q{ext/libmemcached-0.50/tests/cpp_example.cc}, %q{ext/libmemcached-0.50/tests/deprecated.cc}, %q{ext/libmemcached-0.50/tests/deprecated.h}, %q{ext/libmemcached-0.50/tests/error_conditions.cc}, %q{ext/libmemcached-0.50/tests/error_conditions.h}, %q{ext/libmemcached-0.50/tests/hash_plus.cc}, %q{ext/libmemcached-0.50/tests/hash_results.h}, %q{ext/libmemcached-0.50/tests/hashkit_functions.cc}, %q{ext/libmemcached-0.50/tests/include.am}, %q{ext/libmemcached-0.50/tests/ketama_test_cases.h}, %q{ext/libmemcached-0.50/tests/ketama_test_cases_spy.h}, %q{ext/libmemcached-0.50/tests/libmemcached_world.h}, %q{ext/libmemcached-0.50/tests/mem_functions.cc}, %q{ext/libmemcached-0.50/tests/mem_udp.cc}, %q{ext/libmemcached-0.50/tests/output_plus.res}, %q{ext/libmemcached-0.50/tests/parser.cc}, %q{ext/libmemcached-0.50/tests/parser.h}, %q{ext/libmemcached-0.50/tests/plus.cpp}, %q{ext/libmemcached-0.50/tests/pool.cc}, %q{ext/libmemcached-0.50/tests/pool.h}, %q{ext/libmemcached-0.50/tests/print.cc}, %q{ext/libmemcached-0.50/tests/print.h}, %q{ext/libmemcached-0.50/tests/replication.cc}, %q{ext/libmemcached-0.50/tests/replication.h}, %q{ext/libmemcached-0.50/tests/start.cc}, %q{ext/libmemcached-0.50/tests/string.cc}, %q{ext/libmemcached-0.50/tests/string.h}, %q{ext/libmemcached-0.50/tests/virtual_buckets.cc}, %q{ext/libmemcached-0.50/tests/virtual_buckets.h}, %q{ext/libmemcached-0.50/win32/include.am}, %q{ext/libmemcached-0.50/win32/wrappers.h}, %q{ext/rlibmemcached.i}, %q{ext/rlibmemcached_wrap.c}, %q{lib/memcached.rb}, %q{lib/memcached/auth.rb}, %q{lib/memcached/behaviors.rb}, %q{lib/memcached/exceptions.rb}, %q{lib/memcached/experimental.rb}, %q{lib/memcached/memcached.rb}, %q{lib/memcached/rails.rb}, %q{test/profile/benchmark.rb}, %q{test/profile/c_profiler.rb}, %q{test/profile/exercise.rb}, %q{test/profile/rb_profiler.rb}, %q{test/profile/valgrind.rb}, %q{test/setup.rb}, %q{test/teardown.rb}, %q{test/test_helper.rb}, %q{test/unit/binding_test.rb}, %q{test/unit/memcached_experimental_test.rb}, %q{test/unit/memcached_test.rb}, %q{test/unit/rails_test.rb}, %q{couchbase-memcached.gemspec}]
16
+ s.homepage = %q{http://fauna.github.com/fauna/couchbase-memcached/}
17
+ s.rdoc_options = [%q{--line-numbers}, %q{--inline-source}, %q{--title}, %q{Couchbase-memcached}, %q{--main}, %q{README}]
18
+ s.require_paths = [%q{lib}, %q{ext}]
19
+ s.rubyforge_project = %q{fauna}
20
+ s.rubygems_version = %q{1.8.5}
21
+ s.signing_key = %q{/home/avsej/.gem/keys/gem-private_key.pem}
22
+ s.summary = %q{An interface to the libmemcached C client.}
23
+ s.test_files = [%q{test/unit/binding_test.rb}, %q{test/unit/rails_test.rb}, %q{test/unit/memcached_test.rb}, %q{test/unit/memcached_experimental_test.rb}, %q{test/test_helper.rb}]
24
+
25
+ if s.respond_to? :specification_version then
26
+ s.specification_version = 3
27
+
28
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
29
+ else
30
+ end
31
+ else
32
+ end
33
+ end
@@ -0,0 +1,25 @@
1
+ require 'rbconfig'
2
+
3
+ $CXXFLAGS = ENV['CXXFLAGS']
4
+ $PATH = ENV['SOURCE_DIR']
5
+ $GMAKE_CMD = ENV['GMAKE_CMD']
6
+
7
+ HERE = ENV['HERE']
8
+
9
+ BSD = RbConfig::CONFIG['build_os'] =~ /^freebsd|^openbsd/
10
+
11
+ Dir.chdir(HERE)
12
+
13
+ old_dir = Dir.pwd
14
+
15
+ Dir.chdir($PATH)
16
+
17
+ system("cd .") if BSD #Fix for a "quirk" that BSD has..
18
+
19
+ puts(cmd = "#{$GMAKE_CMD} CXXFLAGS='#{$CXXFLAGS}' || true 2>&1")
20
+ raise "'#{cmd}' failed" unless system(cmd)
21
+
22
+ puts(cmd = "#{$GMAKE_CMD} install || true 2>&1")
23
+ raise "'#{cmd}' failed" unless system(cmd)
24
+
25
+ Dir.chdir(old_dir)
@@ -0,0 +1,91 @@
1
+ require 'mkmf'
2
+ require 'rbconfig'
3
+
4
+ HERE = File.expand_path(File.dirname(__FILE__))
5
+ BUNDLE_PATH = Dir.glob("libmemcached-*").last
6
+
7
+ SOLARIS_32 = RbConfig::CONFIG['target'] == "i386-pc-solaris2.10"
8
+ BSD = Config::CONFIG['host_os'].downcase =~ /bsd/
9
+
10
+ $CFLAGS = "#{RbConfig::CONFIG['CFLAGS']} #{$CFLAGS}".gsub("$(cflags)", "").gsub("-fno-common", "")
11
+ $CFLAGS << " -std=gnu99" if SOLARIS_32
12
+ $CFLAGS << " -I/usr/local/include" if BSD
13
+ $EXTRA_CONF = " --disable-64bit" if SOLARIS_32
14
+
15
+ $LDFLAGS = "#{RbConfig::CONFIG['LDFLAGS']} #{$LDFLAGS} -L#{RbConfig::CONFIG['libdir']}".gsub("$(ldflags)", "").gsub("-fno-common", "")
16
+ $CXXFLAGS = " -std=gnu++98"
17
+ $CPPFLAGS = $ARCH_FLAG = $DLDFLAGS = ""
18
+
19
+ # JRuby's default configure options can't build libmemcached properly
20
+ LIBM_CFLAGS = defined?(JRUBY_VERSION) ? "-fPIC -g -O2" : $CFLAGS
21
+ LIBM_LDFLAGS = defined?(JRUBY_VERSION) ? "-fPIC -lsasl2 -lm" : $LDFLAGS
22
+
23
+ GMAKE_CMD = Config::CONFIG['host_os'].downcase =~ /bsd|solaris/ ? "gmake" : "make"
24
+ TAR_CMD = SOLARIS_32 ? 'gtar' : 'tar'
25
+ PATCH_CMD = SOLARIS_32 ? 'gpatch' : 'patch'
26
+
27
+ if ENV['DEBUG']
28
+ puts "Setting debug flags."
29
+ $CFLAGS << " -O0 -ggdb -DHAVE_DEBUG"
30
+ $EXTRA_CONF = ""
31
+ end
32
+
33
+ def run(cmd, reason)
34
+ puts reason
35
+ puts cmd
36
+ raise "'#{cmd}' failed" unless system(cmd)
37
+ end
38
+
39
+ def check_libmemcached
40
+ return if ENV["EXTERNAL_LIB"]
41
+
42
+ $includes = " -I#{HERE}/include"
43
+ $defines = " -DLIBMEMCACHED_WITH_SASL_SUPPORT"
44
+ $libraries = " -L#{HERE}/lib"
45
+ $CFLAGS = "#{$includes} #{$libraries} #{$CFLAGS}"
46
+ $LDFLAGS = "-lsasl2 -lm #{$libraries} #{$LDFLAGS}"
47
+ $LIBPATH = ["#{HERE}/lib"]
48
+ $DEFLIBPATH = [] unless SOLARIS_32
49
+
50
+ Dir.chdir(HERE) do
51
+ run("touch -r #{BUNDLE_PATH}/configure.ac #{BUNDLE_PATH}/m4/pandora_have_sasl.m4", "Touching aclocal.m4 in libmemcached.")
52
+
53
+ Dir.chdir(BUNDLE_PATH) do
54
+ run("env CFLAGS='-fPIC #{LIBM_CFLAGS}' LDFLAGS='-fPIC #{LIBM_LDFLAGS}' ./configure --prefix=#{HERE} --without-memcached --disable-shared --disable-dependency-tracking #{$EXTRA_CONF} 2>&1", "Configuring libmemcached.")
55
+ end
56
+
57
+ Dir.chdir(BUNDLE_PATH) do
58
+ #Running the make command in another script invoked by another shell command solves the "cd ." issue on FreeBSD 6+
59
+ run("GMAKE_CMD='#{GMAKE_CMD}' CXXFLAGS='#{$CXXFLAGS} #{LIBM_CFLAGS}' SOURCE_DIR='#{BUNDLE_PATH}' HERE='#{HERE}' ruby ../extconf-make.rb", "Making libmemcached.")
60
+ end
61
+ end
62
+
63
+ # Absolutely prevent the linker from picking up any other libmemcached
64
+ Dir.chdir("#{HERE}/lib") do
65
+ system("cp -f libmemcached.a libmemcached_gem.a")
66
+ system("cp -f libmemcached.la libmemcached_gem.la")
67
+ end
68
+ $LIBS << " -lmemcached_gem -lsasl2"
69
+ end
70
+
71
+ check_libmemcached
72
+
73
+ if ENV['SWIG']
74
+ puts "WARNING: Swig 2.0.2 not found. Other versions may not work." if (`swig -version`!~ /2.0.2/)
75
+ run("swig #{$defines} #{$includes} -ruby -autorename -o rlibmemcached_wrap.c.in rlibmemcached.i", "Running SWIG.")
76
+
77
+ swig_patches = {
78
+ "STR2CSTR" => "StringValuePtr", # Patching SWIG output for Ruby 1.9.
79
+ "\"swig_runtime_data\"" => "\"SwigRuntimeData\"", # Patching SWIG output for Ruby 1.9.
80
+ "#ifndef RUBY_INIT_STACK" => "#ifdef __NEVER__", # Patching SWIG output for JRuby.
81
+ "while (size && (result\\[size - 1\\] == '\\''\\\\0'\\'')) --size" => "size = strnlen(result, size)" # Fix string conversion.
82
+ }.map{|pair| "s/#{pair.join('/')}/"}.join(';')
83
+
84
+ # sed has different syntax for inplace switch in BSD and GNU version,
85
+ # so using intermediate file
86
+ run("sed '#{swig_patches}' rlibmemcached_wrap.c.in > rlibmemcached_wrap.c", "Apply patches to SWIG output")
87
+ end
88
+
89
+ $CFLAGS << " -Os"
90
+ CONFIG['LDSHARED'] = "g++ -shared"
91
+ create_makefile 'rlibmemcached'
@@ -0,0 +1,11 @@
1
+ Brian Aker, brian@tangent.org -- Client Library, Tools
2
+ Mark Atwood, -- Tools, Docs
3
+ Patrick Galbraith, -- C++ Interface
4
+ Padraig O'Sullivan, -- C++ Interface (current one)
5
+ Tim Bunce, -- Docs
6
+ Trond Norbye, trond.norbye@gmail.com -- Binary protocol, Misc
7
+ Yin Chen, -- Ketama Work
8
+ Toru Maesaka, dev@torum.net -- Stats analysis
9
+ Eric Lambert, -- UDP work
10
+ Monty Taylor, -- Build Releated (Pandora)
11
+ Mingqiang Zhuang, Schooner Information Technology, Inc. -- Rewrite of memslap
@@ -0,0 +1,33 @@
1
+ Software License Agreement (BSD License)
2
+
3
+ Copyright (c) 2011, Data Differential (http://datadifferential.com/)
4
+ Copyright (c) 2007-2010, TangentOrg (Brian Aker)
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions are
9
+ met:
10
+
11
+ * Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+
14
+ * Redistributions in binary form must reproduce the above
15
+ copyright notice, this list of conditions and the following disclaimer
16
+ in the documentation and/or other materials provided with the
17
+ distribution.
18
+
19
+ * Neither the name of TangentOrg nor the names of its
20
+ contributors may be used to endorse or promote products derived from
21
+ this software without specific prior written permission.
22
+
23
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,392 @@
1
+ 0.50 Mon Jun 20 10:36:57 PDT 2011
2
+ * Updates to C++ interface
3
+ * Custom free allocators need to now check for value before calling free.
4
+ * memcached_fetch_result() now uses the internal result when available (about 25 to 50% faster).
5
+ * Fix for stats structure.
6
+ * Updates to documentation.
7
+ * memcached_fetch_result() now uses the internal result when available (about 25 to 50% faster).
8
+
9
+ 0.49 Thu Apr 14 08:43:37 PDT 2011
10
+ * Fix calls to auto methods so that if value is not passed in nothing bad happens.
11
+ * New parser calls for generating memcached_st objects.
12
+ * New error system.
13
+ * New flow control for messages means faster get/set calls.
14
+ * Added new documentation system.
15
+ * A behavior change has been now made that if you specify a weight for any server, we enable the weight flag and do weight balancing.
16
+ * Added MEMCACHED_BEHAVIOR_REMOVE_FAILED_SERVERS to simplify the setting of AUTO REJECT for servers.
17
+
18
+ 0.48 Tue Mar 15 23:05:18 PDT 2011
19
+ * Fix memory leak in server parse.
20
+ * Move test framework out to be its own library (easier to work with Gearman).
21
+
22
+
23
+ 0.47 Wed Feb 23 18:46:48 PST 2011
24
+ * Additional fixes for OpenBSD.
25
+ * Bug fix 677609, 456080.
26
+ * SIGPIPE fix for Linux send().
27
+ * memcapable can now test ascii or binary based on flags.
28
+ * Additional build fixes for SASL.
29
+
30
+
31
+ 0.46 Mon Feb 14 10:28:01 PST 2011
32
+ * Fixes a number of corner case bugs.
33
+ * Fixes related to OpenBSD.
34
+ * Better testing for protocol version.
35
+ * Removes special case infinite wait on blocking setup.
36
+
37
+ 0.45 Tue Feb 8 16:02:06 PST 2011
38
+ * Add support for systemtap
39
+
40
+ 0.44 Wed Sep 22 21:57:57 PDT 2010
41
+ * Windows bug fixes.
42
+ * Hudson port support in test harness.
43
+ * Improved portability of test hanrness.
44
+ * SASL fixes.
45
+
46
+ 0.43 Wed Jul 28 16:29:47 PDT 2010
47
+ * Added --args to memstat so that a greater range of values can be returned.
48
+ * Prelimanary support for Windows.
49
+ * memcached_stat_execute() merged.
50
+
51
+ 0.42 Tue Jul 6 12:29:50 PDT 2010
52
+ * Mistake in libtool caused issue with library version
53
+
54
+ 0.41 Wed Jun 30 13:15:19 PDT 2010
55
+ * Added --file for memcat.
56
+ * Added limemcached_ping() to libmemcached_util
57
+ * Bugfix for some cases where connect would have issues with timeout.
58
+ * Wrong value for errno given as error on an IO failure inside of poll.
59
+ * Bug fix for issue where multiple interfaces with bad DNS were not being caught.
60
+
61
+ 0.40 Thu Apr 22 19:01:25 PDT 2010
62
+ * Placed retry logic in for busted resolvers
63
+ * Add an ignore for SIGPIPE to solve OSX issues.
64
+ * A couple of fixed for memcached_light server.
65
+ * Updated to debug mode to track io_wait
66
+
67
+ 0.39 Tue Apr 6 12:35:13 PDT 2010
68
+ * Add support for prefix keys to binary protocol.
69
+ * Remove the undocumented call memcached_server_remove().
70
+ * The undocumented call memcached_server_by_key() now returns const.
71
+ * memcached_server_error_reset() has been deprecated.
72
+ * memcached_server_list() has been deprecated. Use memcached_server_cursor() to walk the servers found in a memcached_st() structure.
73
+ * memcached_verbosity() can now be run concurrently with other operations.
74
+ * SASL support.
75
+ * Fixes memory leak found in EJECT HOSTS.
76
+
77
+ 0.38 Wed Feb 10 09:40:33 PST 2010
78
+ * C++ interface for libhashkit.
79
+ * Modified memcached_set_memory_allocators() so that it requires a context pointer.
80
+ * memcached_clone() now runs 5 times faster.
81
+ * Functions used for callbacks are now given const memcached_st.
82
+ * Added MEMCACHED_BEHAVIOR_CORK.
83
+ * memslap now creates a configuration file at ~/.memslap.cnf
84
+ * memcached_purge() now calls any callbacks registered during get execution.
85
+ * Many fixes to memslap.
86
+ * Updates for memcapable.
87
+ * Compile fixes for OpenBSD.
88
+ * Fix for possible recursive decent on IO failure.
89
+
90
+ 0.37 Mon Jan 11 16:29:57 PST 2010
91
+ * Fixed build for libhashkit.
92
+ * Fixed install path regression.
93
+ * Modified RPM to strict check install.
94
+ * Added documentation for memcached_server_cursor();
95
+ * Added memcached_servers_reset().
96
+ * Modified memcached_st to remove dead cursor_server member.
97
+
98
+ 0.36 Wed Jan 6 18:23:50 PST 2010
99
+ * Merged in new memslap utility.
100
+ * All of constants.h has been updated to match style (all old identifiers continue to work).
101
+ * Added first pass for libhashkit.
102
+ * Updated test Framework/extended tests.
103
+ * Random read support during replication added.
104
+ * Modified use_sort so that the option can be applied to any distribution type.
105
+ * We removed the MEMCACHED_BEHAVIOR_KETAMA_COMPAT_MODE added in 0.35. Instead use memcached_behavior_set_distribution().
106
+
107
+ 0.35 Mon Nov 9 11:18:33 PST 2009
108
+ * Added support for by_key operations for inc/dec methods.
109
+ * Added mget test to memslap.
110
+ * Support for compatible ketama for SpyMemcached
111
+ * Update C++ interface.
112
+ * Fix for memcp
113
+
114
+ 0.34 Tue Oct 13 08:39:51 PDT 2009
115
+ * Added support for setting behavior flags on a connection pool.
116
+ * Don't increment server_failure_counter on normal disconnects.
117
+ * Added prototype for a callback based protocol parser (server side) with examples so that you could let your own application speak the memcached protocol
118
+ * Updated memcapable to test ASCII protocol.
119
+ * Changed behavior so that server can be removed at first sign of failure.
120
+ * Added memcached_server_get_last_disconnect() call
121
+
122
+ 0.33 Wed Sep 23 10:11:58 PDT 2009
123
+ * Added memcapable to test servers for binary compatibility.
124
+ * Updated C++ interface. Added basic support for C++ exceptions. Added multiple constructors the memcached client object. The C++ interface now takes parameters which are C++ types (such as std::string).
125
+ * Several bug fixes for binary protocol support.
126
+ * Fixed crashing issue with dumping from memcachd server (server internals were changed without documenting change).
127
+
128
+ 0.32 Tue Sep 15 15:49:09 PDT 2009
129
+ * Change of behavior where linger is only modified for no-block and then it is set to zero.
130
+ * Added Twitter's memcached_server_error() functions.
131
+ * Fix for OSX compiles in development builds.
132
+ * Updated C++ interface.
133
+ * Updated memcached_mget and memcached_mget_by_key to take a size_t as a parameter instead of an unsigned int for number_of_keys.
134
+
135
+ 0.31 Fri Jul 10 09:02:50 PDT 2009
136
+ * Added support or HA via replication.
137
+ * malloc() removed for server key usage.
138
+ * Update build system.
139
+ * Added support for memcached_set_memory_allocators().
140
+ * Fixed bug in configure.ac for have_htoll.
141
+
142
+ 0.30 Sun May 31 17:31:52 PDT 2009
143
+ * Added memcachd_dump command (and framework for memdump tool).
144
+ * Realigned all structures to remove padding (and line up important bits for 64bit caches.
145
+ * Remove some of sprintf() in storage calls().
146
+ * Removed printf() in stat call for unknown stat member.
147
+ * memcached_generate_hash() function added.
148
+ * Added tests to make sure all hash functions are stable.
149
+
150
+ 0.29 Tue May 19 08:26:48 PDT 2009
151
+ * Fixed malloc usage to calloc for spots where we need zero filled memory.
152
+ * All code warnings now treated as errors.
153
+ * Fixes for debian packaging.
154
+ * Added new pooling mechanism.
155
+ * MEMCACHED_BEHAVIOR_NO_BLOCK no longer also sets MEMCACHED_BEHAVIOR_BUFFER_REQUESTS.
156
+ * Updated generic rpm.
157
+
158
+ 0.28 Tue Apr 14 18:56:28 PDT 2009
159
+ * Fixed bug in init sructure (reapplied)
160
+ * Fixed bug in get/set by key (nikkhils@gmail.com)
161
+
162
+ 0.27 Sun Mar 29 22:33:01 PDT 2009
163
+ * Added new UDP fire-forget mode.
164
+ * Reworked performance for mget() to better make use of async protocol
165
+ * Cleaned up execution of fetch (just one set of code now)
166
+ * Fixed Jenkin's for big endian hosts.
167
+ * Updates for memstat to determine network latency.
168
+ * Updates for binary protocol.
169
+ * Many updates to documentation.
170
+
171
+ 0.26 Thu Jan 29 13:05:50 PST 2009
172
+ * Fix for decrement on hash key
173
+ * Fixed assert that was catching bad memset() call in host_reset()
174
+ * Fix purge issue for blocked IO which has been stacked.
175
+
176
+ 0.25 Fri Nov 28 09:59:35 PST 2008
177
+ * Jenkins HASH added.
178
+ * Update of Murmur hash code
179
+ * Support explicit weights (Robey Pointer, Evan Weaver)
180
+ * Bugfix for ketama continuum (Robey Pointer)
181
+ * New behavior MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY (Robey Pointer)
182
+ * Don't ever call stats for weighting servers, because it is unstable.
183
+
184
+ 0.24 Tue Sep 16 02:59:03 PDT 2008 (never released)
185
+ * Cleanup compile warnings.
186
+ * Fix issues in partitioning by keys.
187
+ * Fixed "fail case" to make sure when calling memcached_clone() no memcached_st is over written.
188
+ * New memcached_server_by_key() method for finding a server from a key.
189
+ * memcached_server_free() was added for freeing server structures.
190
+
191
+
192
+ 0.23 Sun Sep 7 08:13:59 PDT 2008
193
+ * Added strings.h header for Solaris 9
194
+ * Solaris 64bit fix.
195
+ * Support for weighted Ketama from Yin Chen.
196
+ * Fix for Chinese
197
+ * Fix for 0 length key to trigger bad key.
198
+ * Added behaviors MEMCACHED_BEHAVIOR_SND_TIMEOUT, MEMCACHED_BEHAVIOR_RCV_TIMEOUT
199
+ * Support for Binary Protocol added
200
+
201
+ 0.22 Mon Jul 14 09:24:11 PDT 2008
202
+ * Fix where master key was no being checked for "bad key"
203
+ * Fixed bugs in stats output (thread output was wrong)
204
+ * Clarified MEMCACHED_BAD_KEY_PROVIDED is return for bad prefix key.
205
+ * Found a bug in Flags return (Jacek Ostrowski)
206
+ * Fixed issue with compiling on Visual Studio
207
+
208
+ 0.21 Fri May 23 18:34:09 PDT 2008
209
+ * Change of char * to const char * for all key based functions.
210
+ * New MEMCACHED_CALLBACK_PREFIX_KEY added. You can now create domains for values.
211
+ * Fixed bug introducd in last version on memcp
212
+ * Fix for death of file io to call shutdown()
213
+
214
+ 0.20 Mon May 5 08:34:26 PDT 2008
215
+ * New consistent distribution tests.
216
+ * Found a memory leak when a server constantly fails.
217
+ * Fix in watchpoint macro
218
+ * Changed default timeout to 1 second for poll timeouts
219
+ * Wheel uses less memory/dynamic allocation for size (no longer limited to 512 hosts by default.
220
+ * memslap memory leak fix
221
+ * Added Ketama distribution
222
+ * Fix assert.h compile problem on CentOS
223
+
224
+ 0.19 Wed Apr 9 09:30:53 PDT 2008
225
+ * Documentation fix in libmemcached.
226
+ * Fixed bug where sort was always occuring on hosts
227
+ * Logic fix in branch prediction (thanks Jay!)
228
+ * Read through cached support.
229
+ * Fixed for cas by key operation.
230
+ * Fix for memcached_server_st list structures to have correct count.
231
+ * Added callback MEMCACHED_CALLBACK_DELETE_TRIGGER
232
+ * Removed function call in favor of macro (aka cut out some instructions)
233
+
234
+
235
+ 0.18 Sun Mar 16 21:57:55 PDT 2008
236
+ * Fix plus tests for non-zero value objects and flags.
237
+ * MEMCACHED_HASH_MURMUR added for murmur algorithm provided.
238
+ * MEMCACHED_BEHAVIOR_RETRY_TIMEOUT added to keep connecting from looping on timeout.
239
+ * gcc branch prediction optimizations
240
+ * Refactored entire tree to make include files cleaner
241
+ * Fixed leaked socket.
242
+
243
+ 0.17 Wed Feb 27 03:33:29 PST 2008
244
+ * MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT added for connect timeout in non-block mode.
245
+ * Incompatible change in memcached_behavior_set() api. We now use a uint64_t, instead of a pointer.
246
+ * Fix for storage of values for zero.
247
+ * memcached_server_cursor() function added to API for cycling through servers.
248
+
249
+ 0.16 Mon Feb 18 00:30:25 PST 2008
250
+ * Work on the UDP protocol
251
+ * Added get_by_key, set_by_key tests for C++ API
252
+ * Fix for limit_maxbytes to be 64bit in stats
253
+ * Added Atom Smasher test (scale baby, scale!)
254
+ * Servers are now sorted, meaning that servers are now ordered so that clients with the same lists, will have same distribution. (Idea from Ross McFarland). MEMCACHED_BEHAVIOR_SORT_HOSTS was added to enable this support.
255
+ * Added MEMCACHED_BAD_KEY_PROVIDED error for auto, set, and get operations. MEMCACHED_BEHAVIOR_VERIFY_KEY was added to enable this feature.
256
+ * More error messages on command line tools.
257
+ * Fixed bugs in memcached_cas() operator.
258
+ * Fix to loop through interfaces
259
+
260
+ 0.15 Tue Jan 29 14:55:44 PST 2008
261
+ * More work on the C++ API.
262
+ * Bug fixes around block corner cases.
263
+ * Slight performance increase in both read() and write().
264
+
265
+ 0.14 Tue Jan 22 06:21:49 PST 2008
266
+ * For for bug found by Evan Weaver where increment() was not returning propper error of value was not found.
267
+ * Fix for bad null pointer on flag by Toru Maesaka.
268
+ * Refactor of all IO to just pass in the active server
269
+ * Problem configuring (PKG_CHECK_MODULES) fixed by removal of "rpath" in support/libmemcached.pc.in (Thanks to Ross McFarland).
270
+ * Added memcached_callback_get()/set()
271
+ * First prototype of C++ interface
272
+ * Updated docs for uint16_t changes in previous release
273
+
274
+ 0.13 Sun Jan 13 06:51:50 PST 2008
275
+ * MEMCACHED_BEHAVIOR_USER_DATA added to store user pointer.
276
+ * Fix for failure to connect to invalidate socket.
277
+ * Patch from Marc Rossi to add --hash option for memcp, memrm, and memcat.
278
+ * Kevin's patch for fixing EOF issues during a read.
279
+ * Toru Maesaka patch for stats mismatch
280
+ * Fix for when CRC return 0
281
+ * Fixed uint16_t issues around flags. Turns out the documentation on the protocol was wrong.
282
+ * Lingering socket fixes for FreeBSD.
283
+ * Patches from Kevin Dalley for FreeBSD 4.0
284
+ * Added multi delete functions.
285
+ * All get key returns have C style null termination
286
+ * If memcached_server_list_append is passed NULLs instead of pointers it returns NULL.
287
+ * Added memcached_fetch_execute() method
288
+ * Found a bug where memcached_fetch() was not null terminating the result value.
289
+ * memcached_behavior() now has the ability to set "buffering" so that data is not automatically flushed.
290
+ * Behavior change, buffered commands now return MEMCACHED_BUFFERED
291
+
292
+ 0.12 Tue Dec 11 15:20:55 PST 2007
293
+ * Updates for consistent hashing
294
+ * IPV6 support
295
+ * Static allocation for hostname (performance)
296
+ * Fixed bug where in non-block mode all data might not have been sent on close().
297
+ * Refactor of memcached_get() to use common code.
298
+ * Change in value fetch, MEMCACHED_END is now returned when keys are no longer in the pipe.
299
+ * Fixed bug where key could be out of range of characters
300
+ * Added _by_key() methods to allow partitioning of values to particular servers.
301
+ * MEMCACHED_DEFAILT_TIMEOUT is now set to a non -1 value.
302
+ * Performance improvements in get operations.
303
+
304
+ 0.11 Mon Nov 26 01:05:52 PST 2007
305
+ * Added option to memcache_behavior_set() so that poll() can be timed out.
306
+ * Fixed memory leak in case of using memcached_fetch_result() where no value was returned.
307
+ * Bug fixed in memcached_connect() which would cause servers that did not need to be enabled to be enabled (performance issue).
308
+ * Rewrote bounds checking code for get calls.
309
+ * "make test" now starts its own memcached servers.
310
+ * Added Hseih hash (MEMCACHED_HASH_HSIEH), which is showing about 7% performance over standard hash.
311
+
312
+ 0.10 Tue Nov 20 23:22:31 PST 2007
313
+ * Added append binary test.
314
+ * Added MEMCACHED_BEHAVIOR_CACHE_LOOKUPS behavior so that you can save on multiple DNS lookups.
315
+ * Added CAS support, though this is optional and must be enabled during runtime.
316
+ * Added the utility memerror to create human readable error strings from memcached errors (aka convert ints to strings)
317
+ * Fixed type in MEMCACHED_HOST_LOOKUP_FAILURE
318
+ * Fixed bug where hostname might not be null terminated
319
+ * Moved to using gethostbyname_r() on Linux to solve thread safety issue
320
+ * Added -rpath support for pkg-config
321
+ * Documentation fix for hash setting using memcached_behavior_set()
322
+
323
+ 0.9 Thu Nov 15 07:44:00 PST 2007
324
+ * fix for when no servers are definied.
325
+ * different buffers are now kept for different connections to speed up async efforts
326
+ * Modified increment/decrement functions to return uint64_t values
327
+ * Fixed bug in cases where zero length keys were provided
328
+ * Thread cleanup issue in memslap
329
+ * No hostname lookup on reconnect
330
+ * Fix for flag settings (was doing hex by accident!)
331
+ * Support for 1.2.4 server additions "prepend" and "append" added.
332
+ * Added memcached_version()... not sure if I will make this public or not.
333
+
334
+ 0.8 Mon Nov 5 10:40:41 PST 2007
335
+ * Adding support for CRC hash method
336
+ * Adding support for UNIX sockets
337
+ * Added additional HASHing methods of FNV1_64,FNV1A_64, FNV1_32, FNV1A_32
338
+ * Added pkgconfig support (PKG_CHECK_MODULES)
339
+ * Fixed conflict with defined type in MySQL
340
+ * Added memcached_result_st structure and functions to manipulate it.
341
+
342
+ 0.7 Tue Oct 30 09:24:05 PDT 2007
343
+ * Poved to poll() from select()
344
+ * Fixes in internal string class for allocation of large numbers of strings.
345
+ * memcached_mget() function now sends keys as it parses them instead of building strings as it goes.
346
+ * Propper flush now for making sure we get all IO sent even when in non-block mode.
347
+ * Added --enable-debug rule for configure
348
+ * All asserts() removed (hey this is going into production!)
349
+
350
+
351
+ 0.6 Wed Oct 17 08:41:35 PDT 2007
352
+ * get value returns are now null terminated (request by Cal Heldenbrand)
353
+ * Fixed connections for more hosts then two.
354
+ * Rewrite of the read/write IO systems to handle different sorts of host failures.
355
+ * Added man pages for all functions and tools
356
+ * Raised buffer size for readinng/writing to 16K
357
+ * You can now optionally set the socket size for recv/send via memached_behavior_set/get.
358
+
359
+ 0.5 Tue Oct 9 00:22:25 PDT 2007
360
+ * Ruby maintainer mentioned TCP_NODELAY patch he had added. Added this to C
361
+ library as well. (Eric Hodel drbrain@segment7.net)
362
+ * Added support script for set_benchmark
363
+ * Updated memslap to allow testing of TCP_NODELAY
364
+ * Updated memslap to support --flush (aka dump memcache servers before testing)
365
+ * Fixed bug in multiple hosts not being activated
366
+ * Added environmental variable MEMCACHED_SERVERS which can be used to set the servers list.
367
+ * fixed memcached_stat method (and now memstat works)
368
+ * server connect now happens on demand.
369
+ * Help for all command line applications
370
+
371
+ 0.4 Wed Oct 3 10:28:50 PDT 2007
372
+ * Added buffered IO to write calls for keys
373
+ * Added buffered IO for reads
374
+ * memstat was broken (bad if/else on connect)
375
+ * New non-blocking IO (not default yet). Mucho faster
376
+ * Refactor of test system.
377
+ * memslap crash solved
378
+
379
+ 0.3 Mon Oct 1 06:37:52 PDT 2007
380
+ * Jeff Fisher <guppy@techmonkeys.org> provided a spec file
381
+ * Added "make rpm" around dist file
382
+ * Added support for Solaris
383
+ * Added support for DTrace
384
+ * Fixed read to be recv and write to be send
385
+ * Bug fix where memstat would core if no server was found
386
+ * Added memslap tool (load generator)
387
+ * Numerous bug fixes in library
388
+ * Added calls to library for creating host lists (see text cases to understand how to use this).
389
+
390
+ 0.2 Thu Sep 27 03:46:57 PDT 2007
391
+ * First public version
392
+