vinted-memcached 1.8.0

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 (210) hide show
  1. checksums.yaml +7 -0
  2. data/BENCHMARKS +142 -0
  3. data/CHANGELOG +176 -0
  4. data/Gemfile +11 -0
  5. data/Gemfile.lock +45 -0
  6. data/LICENSE +184 -0
  7. data/Manifest +209 -0
  8. data/README.rdoc +124 -0
  9. data/Rakefile +134 -0
  10. data/TODO +1 -0
  11. data/ext/extconf-make.rb +25 -0
  12. data/ext/extconf.rb +78 -0
  13. data/ext/libmemcached-0.32/AUTHORS +7 -0
  14. data/ext/libmemcached-0.32/COPYING +32 -0
  15. data/ext/libmemcached-0.32/ChangeLog +303 -0
  16. data/ext/libmemcached-0.32/INSTALL +302 -0
  17. data/ext/libmemcached-0.32/Makefile.am +36 -0
  18. data/ext/libmemcached-0.32/Makefile.in +911 -0
  19. data/ext/libmemcached-0.32/NEWS +1 -0
  20. data/ext/libmemcached-0.32/README +33 -0
  21. data/ext/libmemcached-0.32/THANKS +14 -0
  22. data/ext/libmemcached-0.32/TODO +11 -0
  23. data/ext/libmemcached-0.32/aclocal.m4 +2108 -0
  24. data/ext/libmemcached-0.32/clients/Makefile.am +80 -0
  25. data/ext/libmemcached-0.32/clients/Makefile.in +773 -0
  26. data/ext/libmemcached-0.32/clients/client_options.h +32 -0
  27. data/ext/libmemcached-0.32/clients/execute.c +64 -0
  28. data/ext/libmemcached-0.32/clients/execute.h +5 -0
  29. data/ext/libmemcached-0.32/clients/generator.c +74 -0
  30. data/ext/libmemcached-0.32/clients/generator.h +20 -0
  31. data/ext/libmemcached-0.32/clients/memcat.c +178 -0
  32. data/ext/libmemcached-0.32/clients/memcp.c +251 -0
  33. data/ext/libmemcached-0.32/clients/memdump.c +170 -0
  34. data/ext/libmemcached-0.32/clients/memerror.c +80 -0
  35. data/ext/libmemcached-0.32/clients/memflush.c +143 -0
  36. data/ext/libmemcached-0.32/clients/memrm.c +160 -0
  37. data/ext/libmemcached-0.32/clients/memslap.c +441 -0
  38. data/ext/libmemcached-0.32/clients/memstat.c +326 -0
  39. data/ext/libmemcached-0.32/clients/utilities.c +207 -0
  40. data/ext/libmemcached-0.32/clients/utilities.h +41 -0
  41. data/ext/libmemcached-0.32/config/compile +143 -0
  42. data/ext/libmemcached-0.32/config/config.guess +1561 -0
  43. data/ext/libmemcached-0.32/config/config.rpath +666 -0
  44. data/ext/libmemcached-0.32/config/config.sub +1686 -0
  45. data/ext/libmemcached-0.32/config/depcomp +630 -0
  46. data/ext/libmemcached-0.32/config/install-sh +520 -0
  47. data/ext/libmemcached-0.32/config/ltmain.sh +9636 -0
  48. data/ext/libmemcached-0.32/config/missing +376 -0
  49. data/ext/libmemcached-0.32/config.h.in +254 -0
  50. data/ext/libmemcached-0.32/configure +23843 -0
  51. data/ext/libmemcached-0.32/configure.ac +120 -0
  52. data/ext/libmemcached-0.32/libmemcached/Makefile.am +111 -0
  53. data/ext/libmemcached-0.32/libmemcached/Makefile.in +1069 -0
  54. data/ext/libmemcached-0.32/libmemcached/byteorder.c +31 -0
  55. data/ext/libmemcached-0.32/libmemcached/common.h +189 -0
  56. data/ext/libmemcached-0.32/libmemcached/crc.c +86 -0
  57. data/ext/libmemcached-0.32/libmemcached/hsieh_hash.c +68 -0
  58. data/ext/libmemcached-0.32/libmemcached/jenkins_hash.c +213 -0
  59. data/ext/libmemcached-0.32/libmemcached/libmemcached.ver +1 -0
  60. data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.d +30 -0
  61. data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.h +82 -0
  62. data/ext/libmemcached-0.32/libmemcached/md5.c +354 -0
  63. data/ext/libmemcached-0.32/libmemcached/memcached/README.txt +7 -0
  64. data/ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +385 -0
  65. data/ext/libmemcached-0.32/libmemcached/memcached.c +153 -0
  66. data/ext/libmemcached-0.32/libmemcached/memcached.h +305 -0
  67. data/ext/libmemcached-0.32/libmemcached/memcached.hpp +799 -0
  68. data/ext/libmemcached-0.32/libmemcached/memcached_allocators.c +72 -0
  69. data/ext/libmemcached-0.32/libmemcached/memcached_analyze.c +100 -0
  70. data/ext/libmemcached-0.32/libmemcached/memcached_auto.c +207 -0
  71. data/ext/libmemcached-0.32/libmemcached/memcached_behavior.c +290 -0
  72. data/ext/libmemcached-0.32/libmemcached/memcached_callback.c +175 -0
  73. data/ext/libmemcached-0.32/libmemcached/memcached_configure.h.in +23 -0
  74. data/ext/libmemcached-0.32/libmemcached/memcached_connect.c +371 -0
  75. data/ext/libmemcached-0.32/libmemcached/memcached_constants.h +146 -0
  76. data/ext/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
  77. data/ext/libmemcached-0.32/libmemcached/memcached_do.c +72 -0
  78. data/ext/libmemcached-0.32/libmemcached/memcached_dump.c +79 -0
  79. data/ext/libmemcached-0.32/libmemcached/memcached_exist.c +114 -0
  80. data/ext/libmemcached-0.32/libmemcached/memcached_exist.h +20 -0
  81. data/ext/libmemcached-0.32/libmemcached/memcached_fetch.c +102 -0
  82. data/ext/libmemcached-0.32/libmemcached/memcached_flush.c +89 -0
  83. data/ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +23 -0
  84. data/ext/libmemcached-0.32/libmemcached/memcached_get.c +494 -0
  85. data/ext/libmemcached-0.32/libmemcached/memcached_get.h +87 -0
  86. data/ext/libmemcached-0.32/libmemcached/memcached_hash.c +252 -0
  87. data/ext/libmemcached-0.32/libmemcached/memcached_hosts.c +510 -0
  88. data/ext/libmemcached-0.32/libmemcached/memcached_internal.h +31 -0
  89. data/ext/libmemcached-0.32/libmemcached/memcached_io.c +594 -0
  90. data/ext/libmemcached-0.32/libmemcached/memcached_io.h +72 -0
  91. data/ext/libmemcached-0.32/libmemcached/memcached_key.c +28 -0
  92. data/ext/libmemcached-0.32/libmemcached/memcached_parse.c +74 -0
  93. data/ext/libmemcached-0.32/libmemcached/memcached_pool.h +38 -0
  94. data/ext/libmemcached-0.32/libmemcached/memcached_purge.c +76 -0
  95. data/ext/libmemcached-0.32/libmemcached/memcached_quit.c +75 -0
  96. data/ext/libmemcached-0.32/libmemcached/memcached_response.c +529 -0
  97. data/ext/libmemcached-0.32/libmemcached/memcached_result.c +57 -0
  98. data/ext/libmemcached-0.32/libmemcached/memcached_result.h +59 -0
  99. data/ext/libmemcached-0.32/libmemcached/memcached_sasl.c +225 -0
  100. data/ext/libmemcached-0.32/libmemcached/memcached_sasl.h +44 -0
  101. data/ext/libmemcached-0.32/libmemcached/memcached_server.c +159 -0
  102. data/ext/libmemcached-0.32/libmemcached/memcached_server.h +93 -0
  103. data/ext/libmemcached-0.32/libmemcached/memcached_stats.c +437 -0
  104. data/ext/libmemcached-0.32/libmemcached/memcached_storage.c +514 -0
  105. data/ext/libmemcached-0.32/libmemcached/memcached_storage.h +107 -0
  106. data/ext/libmemcached-0.32/libmemcached/memcached_strerror.c +92 -0
  107. data/ext/libmemcached-0.32/libmemcached/memcached_string.c +138 -0
  108. data/ext/libmemcached-0.32/libmemcached/memcached_string.h +53 -0
  109. data/ext/libmemcached-0.32/libmemcached/memcached_touch.c +60 -0
  110. data/ext/libmemcached-0.32/libmemcached/memcached_touch.h +31 -0
  111. data/ext/libmemcached-0.32/libmemcached/memcached_types.h +44 -0
  112. data/ext/libmemcached-0.32/libmemcached/memcached_util.h +15 -0
  113. data/ext/libmemcached-0.32/libmemcached/memcached_verbosity.c +36 -0
  114. data/ext/libmemcached-0.32/libmemcached/memcached_version.c +112 -0
  115. data/ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h +38 -0
  116. data/ext/libmemcached-0.32/libmemcached/murmur_hash.c +76 -0
  117. data/ext/libmemcached-0.32/libmemcached/visibility.h +51 -0
  118. data/ext/libmemcached-0.32/libmemcachedutil/Makefile.am +11 -0
  119. data/ext/libmemcached-0.32/libmemcachedutil/Makefile.in +604 -0
  120. data/ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +1 -0
  121. data/ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c +170 -0
  122. data/ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +103 -0
  123. data/ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +67 -0
  124. data/ext/libmemcached-0.32/m4/acx_pthread.m4 +276 -0
  125. data/ext/libmemcached-0.32/m4/byteorder.m4 +40 -0
  126. data/ext/libmemcached-0.32/m4/deprecated.m4 +17 -0
  127. data/ext/libmemcached-0.32/m4/enable_utillib.m4 +16 -0
  128. data/ext/libmemcached-0.32/m4/extensions.m4 +94 -0
  129. data/ext/libmemcached-0.32/m4/hsieh.m4 +18 -0
  130. data/ext/libmemcached-0.32/m4/lib-prefix.m4 +221 -0
  131. data/ext/libmemcached-0.32/m4/libtool.m4 +7831 -0
  132. data/ext/libmemcached-0.32/m4/ltoptions.m4 +369 -0
  133. data/ext/libmemcached-0.32/m4/ltsugar.m4 +123 -0
  134. data/ext/libmemcached-0.32/m4/ltversion.m4 +23 -0
  135. data/ext/libmemcached-0.32/m4/lt~obsolete.m4 +98 -0
  136. data/ext/libmemcached-0.32/m4/memcached.m4 +30 -0
  137. data/ext/libmemcached-0.32/m4/pandora_64bit.m4 +55 -0
  138. data/ext/libmemcached-0.32/m4/pandora_canonical.m4 +151 -0
  139. data/ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +37 -0
  140. data/ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +16 -0
  141. data/ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +41 -0
  142. data/ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +36 -0
  143. data/ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +54 -0
  144. data/ext/libmemcached-0.32/m4/pandora_have_sasl.m4 +133 -0
  145. data/ext/libmemcached-0.32/m4/pandora_header_assert.m4 +23 -0
  146. data/ext/libmemcached-0.32/m4/pandora_libtool.m4 +15 -0
  147. data/ext/libmemcached-0.32/m4/pandora_optimize.m4 +79 -0
  148. data/ext/libmemcached-0.32/m4/pandora_shared_ptr.m4 +56 -0
  149. data/ext/libmemcached-0.32/m4/pandora_vc_build.m4 +32 -0
  150. data/ext/libmemcached-0.32/m4/pandora_warnings.m4 +262 -0
  151. data/ext/libmemcached-0.32/m4/pod2man.m4 +7 -0
  152. data/ext/libmemcached-0.32/m4/protocol_binary.m4 +23 -0
  153. data/ext/libmemcached-0.32/m4/setsockopt.m4 +57 -0
  154. data/ext/libmemcached-0.32/m4/visibility.m4 +52 -0
  155. data/ext/libmemcached-0.32/support/Makefile.am +4 -0
  156. data/ext/libmemcached-0.32/support/Makefile.in +487 -0
  157. data/ext/libmemcached-0.32/support/libmemcached-fc.spec.in +105 -0
  158. data/ext/libmemcached-0.32/support/libmemcached.pc.in +10 -0
  159. data/ext/libmemcached-0.32/support/libmemcached.spec +105 -0
  160. data/ext/libmemcached-0.32/support/libmemcached.spec.in +105 -0
  161. data/ext/libmemcached-0.32/support/set_benchmark.sh +5 -0
  162. data/ext/libmemcached-0.32/tests/Makefile.am +113 -0
  163. data/ext/libmemcached-0.32/tests/Makefile.in +762 -0
  164. data/ext/libmemcached-0.32/tests/atomsmasher.c +245 -0
  165. data/ext/libmemcached-0.32/tests/function.c +4904 -0
  166. data/ext/libmemcached-0.32/tests/ketama_test_cases.h +108 -0
  167. data/ext/libmemcached-0.32/tests/output.cmp +7 -0
  168. data/ext/libmemcached-0.32/tests/output.res +7 -0
  169. data/ext/libmemcached-0.32/tests/output2.res +46 -0
  170. data/ext/libmemcached-0.32/tests/plus.cpp +293 -0
  171. data/ext/libmemcached-0.32/tests/r/memcat.res +19 -0
  172. data/ext/libmemcached-0.32/tests/r/memcp.res +27 -0
  173. data/ext/libmemcached-0.32/tests/r/memrm.res +19 -0
  174. data/ext/libmemcached-0.32/tests/r/memslap.res +33 -0
  175. data/ext/libmemcached-0.32/tests/r/memstat.res +33 -0
  176. data/ext/libmemcached-0.32/tests/server.c +118 -0
  177. data/ext/libmemcached-0.32/tests/server.h +25 -0
  178. data/ext/libmemcached-0.32/tests/start.c +16 -0
  179. data/ext/libmemcached-0.32/tests/t/memcat.test +4 -0
  180. data/ext/libmemcached-0.32/tests/t/memcp.test +3 -0
  181. data/ext/libmemcached-0.32/tests/t/memrm.test +3 -0
  182. data/ext/libmemcached-0.32/tests/t/memslap.test +5 -0
  183. data/ext/libmemcached-0.32/tests/t/memstat.test +3 -0
  184. data/ext/libmemcached-0.32/tests/test.c +137 -0
  185. data/ext/libmemcached-0.32/tests/test.h +46 -0
  186. data/ext/libmemcached-0.32/tests/udp.c +76 -0
  187. data/ext/rlibmemcached.i +258 -0
  188. data/ext/rlibmemcached_wrap.c +13917 -0
  189. data/lib/memcached/auth.rb +16 -0
  190. data/lib/memcached/behaviors.rb +78 -0
  191. data/lib/memcached/exceptions.rb +84 -0
  192. data/lib/memcached/experimental.rb +48 -0
  193. data/lib/memcached/marshal_codec.rb +10 -0
  194. data/lib/memcached/memcached.rb +732 -0
  195. data/lib/memcached/rails.rb +250 -0
  196. data/lib/memcached.rb +33 -0
  197. data/memcached.gemspec +0 -0
  198. data/test/profile/benchmark.rb +280 -0
  199. data/test/profile/c_profiler.rb +14 -0
  200. data/test/profile/exercise.rb +185 -0
  201. data/test/profile/rb_profiler.rb +21 -0
  202. data/test/profile/valgrind.rb +10 -0
  203. data/test/setup.rb +30 -0
  204. data/test/teardown.rb +0 -0
  205. data/test/test_helper.rb +18 -0
  206. data/test/unit/binding_test.rb +8 -0
  207. data/test/unit/memcached_experimental_test.rb +272 -0
  208. data/test/unit/memcached_test.rb +1487 -0
  209. data/test/unit/rails_test.rb +330 -0
  210. metadata +336 -0
data/Manifest ADDED
@@ -0,0 +1,209 @@
1
+ BENCHMARKS
2
+ CHANGELOG
3
+ Gemfile
4
+ Gemfile.lock
5
+ LICENSE
6
+ Manifest
7
+ README.rdoc
8
+ Rakefile
9
+ TODO
10
+ ext/extconf-make.rb
11
+ ext/extconf.rb
12
+ ext/libmemcached-0.32/AUTHORS
13
+ ext/libmemcached-0.32/COPYING
14
+ ext/libmemcached-0.32/ChangeLog
15
+ ext/libmemcached-0.32/INSTALL
16
+ ext/libmemcached-0.32/Makefile.am
17
+ ext/libmemcached-0.32/Makefile.in
18
+ ext/libmemcached-0.32/NEWS
19
+ ext/libmemcached-0.32/README
20
+ ext/libmemcached-0.32/THANKS
21
+ ext/libmemcached-0.32/TODO
22
+ ext/libmemcached-0.32/aclocal.m4
23
+ ext/libmemcached-0.32/clients/Makefile.am
24
+ ext/libmemcached-0.32/clients/Makefile.in
25
+ ext/libmemcached-0.32/clients/client_options.h
26
+ ext/libmemcached-0.32/clients/execute.c
27
+ ext/libmemcached-0.32/clients/execute.h
28
+ ext/libmemcached-0.32/clients/generator.c
29
+ ext/libmemcached-0.32/clients/generator.h
30
+ ext/libmemcached-0.32/clients/memcat.c
31
+ ext/libmemcached-0.32/clients/memcp.c
32
+ ext/libmemcached-0.32/clients/memdump.c
33
+ ext/libmemcached-0.32/clients/memerror.c
34
+ ext/libmemcached-0.32/clients/memflush.c
35
+ ext/libmemcached-0.32/clients/memrm.c
36
+ ext/libmemcached-0.32/clients/memslap.c
37
+ ext/libmemcached-0.32/clients/memstat.c
38
+ ext/libmemcached-0.32/clients/utilities.c
39
+ ext/libmemcached-0.32/clients/utilities.h
40
+ ext/libmemcached-0.32/config.h.in
41
+ ext/libmemcached-0.32/config/compile
42
+ ext/libmemcached-0.32/config/config.guess
43
+ ext/libmemcached-0.32/config/config.rpath
44
+ ext/libmemcached-0.32/config/config.sub
45
+ ext/libmemcached-0.32/config/depcomp
46
+ ext/libmemcached-0.32/config/install-sh
47
+ ext/libmemcached-0.32/config/ltmain.sh
48
+ ext/libmemcached-0.32/config/missing
49
+ ext/libmemcached-0.32/configure
50
+ ext/libmemcached-0.32/configure.ac
51
+ ext/libmemcached-0.32/libmemcached/Makefile.am
52
+ ext/libmemcached-0.32/libmemcached/Makefile.in
53
+ ext/libmemcached-0.32/libmemcached/byteorder.c
54
+ ext/libmemcached-0.32/libmemcached/common.h
55
+ ext/libmemcached-0.32/libmemcached/crc.c
56
+ ext/libmemcached-0.32/libmemcached/hsieh_hash.c
57
+ ext/libmemcached-0.32/libmemcached/jenkins_hash.c
58
+ ext/libmemcached-0.32/libmemcached/libmemcached.ver
59
+ ext/libmemcached-0.32/libmemcached/libmemcached_probes.d
60
+ ext/libmemcached-0.32/libmemcached/libmemcached_probes.h
61
+ ext/libmemcached-0.32/libmemcached/md5.c
62
+ ext/libmemcached-0.32/libmemcached/memcached.c
63
+ ext/libmemcached-0.32/libmemcached/memcached.h
64
+ ext/libmemcached-0.32/libmemcached/memcached.hpp
65
+ ext/libmemcached-0.32/libmemcached/memcached/README.txt
66
+ ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h
67
+ ext/libmemcached-0.32/libmemcached/memcached_allocators.c
68
+ ext/libmemcached-0.32/libmemcached/memcached_analyze.c
69
+ ext/libmemcached-0.32/libmemcached/memcached_auto.c
70
+ ext/libmemcached-0.32/libmemcached/memcached_behavior.c
71
+ ext/libmemcached-0.32/libmemcached/memcached_callback.c
72
+ ext/libmemcached-0.32/libmemcached/memcached_configure.h.in
73
+ ext/libmemcached-0.32/libmemcached/memcached_connect.c
74
+ ext/libmemcached-0.32/libmemcached/memcached_constants.h
75
+ ext/libmemcached-0.32/libmemcached/memcached_delete.c
76
+ ext/libmemcached-0.32/libmemcached/memcached_do.c
77
+ ext/libmemcached-0.32/libmemcached/memcached_dump.c
78
+ ext/libmemcached-0.32/libmemcached/memcached_exist.c
79
+ ext/libmemcached-0.32/libmemcached/memcached_exist.h
80
+ ext/libmemcached-0.32/libmemcached/memcached_fetch.c
81
+ ext/libmemcached-0.32/libmemcached/memcached_flush.c
82
+ ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c
83
+ ext/libmemcached-0.32/libmemcached/memcached_get.c
84
+ ext/libmemcached-0.32/libmemcached/memcached_get.h
85
+ ext/libmemcached-0.32/libmemcached/memcached_hash.c
86
+ ext/libmemcached-0.32/libmemcached/memcached_hosts.c
87
+ ext/libmemcached-0.32/libmemcached/memcached_internal.h
88
+ ext/libmemcached-0.32/libmemcached/memcached_io.c
89
+ ext/libmemcached-0.32/libmemcached/memcached_io.h
90
+ ext/libmemcached-0.32/libmemcached/memcached_key.c
91
+ ext/libmemcached-0.32/libmemcached/memcached_parse.c
92
+ ext/libmemcached-0.32/libmemcached/memcached_pool.h
93
+ ext/libmemcached-0.32/libmemcached/memcached_purge.c
94
+ ext/libmemcached-0.32/libmemcached/memcached_quit.c
95
+ ext/libmemcached-0.32/libmemcached/memcached_response.c
96
+ ext/libmemcached-0.32/libmemcached/memcached_result.c
97
+ ext/libmemcached-0.32/libmemcached/memcached_result.h
98
+ ext/libmemcached-0.32/libmemcached/memcached_sasl.c
99
+ ext/libmemcached-0.32/libmemcached/memcached_sasl.h
100
+ ext/libmemcached-0.32/libmemcached/memcached_server.c
101
+ ext/libmemcached-0.32/libmemcached/memcached_server.h
102
+ ext/libmemcached-0.32/libmemcached/memcached_stats.c
103
+ ext/libmemcached-0.32/libmemcached/memcached_storage.c
104
+ ext/libmemcached-0.32/libmemcached/memcached_storage.h
105
+ ext/libmemcached-0.32/libmemcached/memcached_strerror.c
106
+ ext/libmemcached-0.32/libmemcached/memcached_string.c
107
+ ext/libmemcached-0.32/libmemcached/memcached_string.h
108
+ ext/libmemcached-0.32/libmemcached/memcached_touch.c
109
+ ext/libmemcached-0.32/libmemcached/memcached_touch.h
110
+ ext/libmemcached-0.32/libmemcached/memcached_types.h
111
+ ext/libmemcached-0.32/libmemcached/memcached_util.h
112
+ ext/libmemcached-0.32/libmemcached/memcached_verbosity.c
113
+ ext/libmemcached-0.32/libmemcached/memcached_version.c
114
+ ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h
115
+ ext/libmemcached-0.32/libmemcached/murmur_hash.c
116
+ ext/libmemcached-0.32/libmemcached/visibility.h
117
+ ext/libmemcached-0.32/libmemcachedutil/Makefile.am
118
+ ext/libmemcached-0.32/libmemcachedutil/Makefile.in
119
+ ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver
120
+ ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c
121
+ ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4
122
+ ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4
123
+ ext/libmemcached-0.32/m4/acx_pthread.m4
124
+ ext/libmemcached-0.32/m4/byteorder.m4
125
+ ext/libmemcached-0.32/m4/deprecated.m4
126
+ ext/libmemcached-0.32/m4/enable_utillib.m4
127
+ ext/libmemcached-0.32/m4/extensions.m4
128
+ ext/libmemcached-0.32/m4/hsieh.m4
129
+ ext/libmemcached-0.32/m4/lib-prefix.m4
130
+ ext/libmemcached-0.32/m4/libtool.m4
131
+ ext/libmemcached-0.32/m4/ltoptions.m4
132
+ ext/libmemcached-0.32/m4/ltsugar.m4
133
+ ext/libmemcached-0.32/m4/ltversion.m4
134
+ ext/libmemcached-0.32/m4/lt~obsolete.m4
135
+ ext/libmemcached-0.32/m4/memcached.m4
136
+ ext/libmemcached-0.32/m4/pandora_64bit.m4
137
+ ext/libmemcached-0.32/m4/pandora_canonical.m4
138
+ ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4
139
+ ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4
140
+ ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4
141
+ ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4
142
+ ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4
143
+ ext/libmemcached-0.32/m4/pandora_have_sasl.m4
144
+ ext/libmemcached-0.32/m4/pandora_header_assert.m4
145
+ ext/libmemcached-0.32/m4/pandora_libtool.m4
146
+ ext/libmemcached-0.32/m4/pandora_optimize.m4
147
+ ext/libmemcached-0.32/m4/pandora_shared_ptr.m4
148
+ ext/libmemcached-0.32/m4/pandora_vc_build.m4
149
+ ext/libmemcached-0.32/m4/pandora_warnings.m4
150
+ ext/libmemcached-0.32/m4/pod2man.m4
151
+ ext/libmemcached-0.32/m4/protocol_binary.m4
152
+ ext/libmemcached-0.32/m4/setsockopt.m4
153
+ ext/libmemcached-0.32/m4/visibility.m4
154
+ ext/libmemcached-0.32/support/Makefile.am
155
+ ext/libmemcached-0.32/support/Makefile.in
156
+ ext/libmemcached-0.32/support/libmemcached-fc.spec.in
157
+ ext/libmemcached-0.32/support/libmemcached.pc.in
158
+ ext/libmemcached-0.32/support/libmemcached.spec
159
+ ext/libmemcached-0.32/support/libmemcached.spec.in
160
+ ext/libmemcached-0.32/support/set_benchmark.sh
161
+ ext/libmemcached-0.32/tests/Makefile.am
162
+ ext/libmemcached-0.32/tests/Makefile.in
163
+ ext/libmemcached-0.32/tests/atomsmasher.c
164
+ ext/libmemcached-0.32/tests/function.c
165
+ ext/libmemcached-0.32/tests/ketama_test_cases.h
166
+ ext/libmemcached-0.32/tests/output.cmp
167
+ ext/libmemcached-0.32/tests/output.res
168
+ ext/libmemcached-0.32/tests/output2.res
169
+ ext/libmemcached-0.32/tests/plus.cpp
170
+ ext/libmemcached-0.32/tests/r/memcat.res
171
+ ext/libmemcached-0.32/tests/r/memcp.res
172
+ ext/libmemcached-0.32/tests/r/memrm.res
173
+ ext/libmemcached-0.32/tests/r/memslap.res
174
+ ext/libmemcached-0.32/tests/r/memstat.res
175
+ ext/libmemcached-0.32/tests/server.c
176
+ ext/libmemcached-0.32/tests/server.h
177
+ ext/libmemcached-0.32/tests/start.c
178
+ ext/libmemcached-0.32/tests/t/memcat.test
179
+ ext/libmemcached-0.32/tests/t/memcp.test
180
+ ext/libmemcached-0.32/tests/t/memrm.test
181
+ ext/libmemcached-0.32/tests/t/memslap.test
182
+ ext/libmemcached-0.32/tests/t/memstat.test
183
+ ext/libmemcached-0.32/tests/test.c
184
+ ext/libmemcached-0.32/tests/test.h
185
+ ext/libmemcached-0.32/tests/udp.c
186
+ ext/rlibmemcached.i
187
+ ext/rlibmemcached_wrap.c
188
+ lib/memcached.rb
189
+ lib/memcached/auth.rb
190
+ lib/memcached/behaviors.rb
191
+ lib/memcached/exceptions.rb
192
+ lib/memcached/experimental.rb
193
+ lib/memcached/marshal_codec.rb
194
+ lib/memcached/memcached.rb
195
+ lib/memcached/rails.rb
196
+ memcached.gemspec
197
+ memcached.pem
198
+ test/profile/benchmark.rb
199
+ test/profile/c_profiler.rb
200
+ test/profile/exercise.rb
201
+ test/profile/rb_profiler.rb
202
+ test/profile/valgrind.rb
203
+ test/setup.rb
204
+ test/teardown.rb
205
+ test/test_helper.rb
206
+ test/unit/binding_test.rb
207
+ test/unit/memcached_experimental_test.rb
208
+ test/unit/memcached_test.rb
209
+ test/unit/rails_test.rb
data/README.rdoc ADDED
@@ -0,0 +1,124 @@
1
+ = memcached
2
+
3
+ An interface to the libmemcached C client.
4
+
5
+ {<img src="https://travis-ci.org/evan/memcached.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/evan/memcached]
6
+
7
+ == License
8
+
9
+ Copyright 2009-2013 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.
10
+
11
+ == Features
12
+
13
+ * clean API
14
+ * robust access to all memcached features
15
+ * SASL support for the binary protocol
16
+ * multiple hashing modes, including consistent hashing
17
+ * ludicrous speed, including optional pipelined IO with no_reply
18
+
19
+ The <b>memcached</b> library wraps the pure-C libmemcached client via SWIG.
20
+
21
+ == Installation
22
+
23
+ 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` and `gettext` libraries, which should be provided through your system's package manager.
24
+
25
+ Install the gem:
26
+ sudo gem install memcached --no-rdoc --no-ri
27
+
28
+ == Usage
29
+
30
+ Start a local networked memcached server:
31
+ $ memcached -p 11211 &
32
+
33
+ Now, in Ruby, require the library and instantiate a Memcached object at a global level:
34
+
35
+ require 'memcached'
36
+ $cache = Memcached.new("localhost:11211")
37
+
38
+ Now you can set things and get things:
39
+
40
+ value = 'hello'
41
+ $cache.set 'test', value
42
+ $cache.get 'test' #=> "hello"
43
+
44
+ You can set with an expiration timeout:
45
+
46
+ value = 'hello'
47
+ $cache.set 'test', value, 1
48
+ sleep(2)
49
+ $cache.get 'test' #=> raises Memcached::NotFound
50
+
51
+ You can get multiple values at once:
52
+
53
+ value = 'hello'
54
+ $cache.set 'test', value
55
+ $cache.set 'test2', value
56
+ $cache.get ['test', 'test2', 'missing']
57
+ #=> {"test" => "hello", "test2" => "hello"}
58
+
59
+ You can set a counter and increment it. Note that you must initialize it with an integer, encoded as an unmarshalled ASCII string:
60
+
61
+ start = 1
62
+ $cache.set 'counter', start.to_s, 0, false
63
+ $cache.increment 'counter' #=> 2
64
+ $cache.increment 'counter' #=> 3
65
+ $cache.get('counter', false).to_i #=> 3
66
+
67
+ You can get some server stats:
68
+
69
+ $cache.stats #=> {..., :bytes_written=>[62], :version=>["1.2.4"] ...}
70
+
71
+ 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:
72
+
73
+ $cache.set 'test', nil
74
+ $cache.get 'test' #=> nil
75
+ $cache.delete 'test'
76
+ $cache.get 'test' #=> raises Memcached::NotFound
77
+
78
+ == Rails 3 and 4
79
+
80
+ Use {memcached_store gem}[https://github.com/Shopify/memcached_store] to integrate ActiveSupport cache store and memcached gem
81
+
82
+ == Pipelining
83
+
84
+ 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:
85
+
86
+ :no_block => true,
87
+ :buffer_requests => true,
88
+ :noreply => true,
89
+ :binary_protocol => false
90
+
91
+ Currently #append, #prepend, #set, and #delete are pipelined. Note that when you perform a read, all pending writes are flushed to the servers.
92
+
93
+ == Threading
94
+
95
+ <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.
96
+
97
+ thread = Thread.new do
98
+ cache = $cache.clone
99
+ # Perform operations on cache, not $cache
100
+ cache.set 'example', 1
101
+ cache.get 'example'
102
+ end
103
+
104
+ # Join the thread so that exceptions don't get lost
105
+ thread.join
106
+
107
+ == Legacy applications
108
+
109
+ There is a compatibility wrapper for legacy applications called Memcached::Rails.
110
+
111
+ == Benchmarks
112
+
113
+ <b>memcached</b>, correctly configured, is at least twice as fast as <b>memcache-client</b> and <b>dalli</b>. See link:BENCHMARKS for details.
114
+
115
+ == Reporting problems
116
+
117
+ The support forum is here[http://github.com/evan/memcached/issues].
118
+
119
+ Patches and contributions are very welcome. Please note that contributors are required to assign copyright for their additions to Cloudburst, LLC.
120
+
121
+ == Further resources
122
+
123
+ * {Memcached wiki}[https://code.google.com/p/memcached/wiki/NewStart]
124
+ * {Libmemcached homepage}[libmemcached.org]
data/Rakefile ADDED
@@ -0,0 +1,134 @@
1
+ require 'echoe'
2
+
3
+ # ENV["GEM_CERTIFICATE_CHAIN"]="memcached.pem"
4
+
5
+ Echoe.new("memcached") do |p|
6
+ p.author = "Evan Weaver"
7
+ p.project = "evan"
8
+ p.summary = "An interface to the libmemcached C client."
9
+ p.licenses = "Academic Free License 3.0 (AFL-3.0)"
10
+ p.rdoc_pattern = /README|TODO|LICENSE|CHANGELOG|BENCH|COMPAT|exceptions|experimental.rb|behaviors|rails.rb|memcached.rb/
11
+ p.rdoc_options = %w[--line-numbers --inline-source --title Memcached --main README.rdoc --exclude=ext/bin --exclude=ext/libmemcached-.*/(clients|tests)]
12
+ p.retain_gemspec = true
13
+ p.development_dependencies = ["rake", "mocha", "echoe", "activesupport"]
14
+ p.clean_pattern += ["ext/Makefile",
15
+ "ext/bin",
16
+ "ext/include",
17
+ "ext/lib",
18
+ "ext/share",
19
+ "ext/**/Makefile",
20
+ "ext/Makefile.in",
21
+ "ext/libmemcached-*/autom4te.cache",
22
+ "ext/libmemcached-*/clients/memcat",
23
+ "ext/libmemcached-*/clients/memcp",
24
+ "ext/libmemcached-*/clients/memdump",
25
+ "ext/libmemcached-*/clients/memerror",
26
+ "ext/libmemcached-*/clients/memflush",
27
+ "ext/libmemcached-*/clients/memrm",
28
+ "ext/libmemcached-*/clients/memslap",
29
+ "ext/libmemcached-*/clients/memstat",
30
+ "ext/libmemcached-*/tests/atomsmasher",
31
+ "ext/libmemcached-*/tests/startservers",
32
+ "ext/libmemcached-*/tests/testapp",
33
+ "ext/libmemcached-*/tests/testplus",
34
+ "ext/libmemcached-*/tests/udptest",
35
+ "ext/libmemcached-*/config.h",
36
+ "ext/libmemcached-*/config.log",
37
+ "ext/libmemcached-*/config.status",
38
+ "ext/libmemcached-*/docs/*.[1,3]",
39
+ "ext/libmemcached-*/libmemcached/memcached_configure.h",
40
+ "ext/libmemcached-*/libtool",
41
+ "ext/libmemcached-*/stamp*",
42
+ "ext/libmemcached-*/support/libmemcached.pc",
43
+ "ext/libmemcached-*/support/libmemcached-fc.spec",
44
+ "ext/libmemcached-*/**/*.s[oa]",
45
+ "ext/libmemcached-*/**/*.l[oa]",
46
+ "ext/conftest.dSYM",
47
+ "lib/rlibmemcached*",
48
+ "**/*.rbc"]
49
+ end
50
+
51
+ task :swig do
52
+ run("swig -DLIBMEMCACHED_WITH_SASL_SUPPORT -Iext/libmemcached-0.32 -ruby -autorename -o ext/rlibmemcached_wrap.c.in ext/rlibmemcached.i", "Running SWIG")
53
+ swig_patches = {
54
+ "#ifndef RUBY_INIT_STACK" => "#ifdef __NEVER__" # Patching SWIG output for JRuby.
55
+ }.map{|pair| "s/#{pair.join('/')}/"}.join(';')
56
+ # sed has different syntax for inplace switch in BSD and GNU version, so using intermediate file
57
+ run("sed '#{swig_patches}' ext/rlibmemcached_wrap.c.in > ext/rlibmemcached_wrap.c", "Apply patches to SWIG output")
58
+ end
59
+
60
+ task :exceptions do
61
+ $LOAD_PATH << "lib"
62
+ require 'memcached'
63
+ Memcached.constants.sort.each do |const_name|
64
+ const = Memcached.send(:const_get, const_name)
65
+ next if const == Memcached::Success or const == Memcached::Stored
66
+ if const.is_a? Class and const < Memcached::Error
67
+ puts "* Memcached::#{const_name}"
68
+ end
69
+ end
70
+ end
71
+
72
+ task :benchmark do
73
+ exec("ruby #{File.dirname(__FILE__)}/test/profile/benchmark.rb")
74
+ end
75
+
76
+ task :rb_profile do
77
+ exec("ruby #{File.dirname(__FILE__)}/test/profile/rb_profiler.rb")
78
+ end
79
+
80
+ task :c_profile do
81
+ exec("ruby #{File.dirname(__FILE__)}/test/profile/c_profiler.rb")
82
+ end
83
+
84
+ task :valgrind do
85
+ exec("ruby #{File.dirname(__FILE__)}/test/profile/valgrind.rb")
86
+ end
87
+
88
+ def with_vm(vm, cmd)
89
+ bindir = vm.split("/")[0..-2].join("/")
90
+ puts "#{vm} #{cmd} started"
91
+ if !File.exist?("#{bindir}/rake")
92
+ puts "#{vm} not found"
93
+ exit(1)
94
+ elsif system("bash --norc --noprofile -c 'export PATH=#{bindir}:/bin:/usr/bin && which rake && #{bindir}/rake clean && #{bindir}/rake compile'")
95
+ puts "#{vm} compiled"
96
+ if system("bash --norc --noprofile -c 'export PATH=#{bindir}:/bin:/usr/bin && #{bindir}/rake #{cmd}'")
97
+ puts "#{vm} #{cmd} success (1st try)"
98
+ elsif system("bash --norc --noprofile -c 'export PATH=#{bindir}:/bin:/usr/bin && #{bindir}/rake #{cmd}'")
99
+ puts "#{vm} #{cmd} success (2nd try)"
100
+ else
101
+ puts "#{vm} #{cmd} failed"
102
+ exit(1)
103
+ end
104
+ else
105
+ puts "#{vm} compilation failed"
106
+ exit(1)
107
+ end
108
+ end
109
+
110
+ task :test_20 do
111
+ with_vm("/usr/bin/ruby", "test")
112
+ end
113
+
114
+ task :test_19 do
115
+ with_vm("/opt/local/bin/ruby1.9", "test")
116
+ end
117
+
118
+ task :test_rbx do
119
+ with_vm("/usr/local/rubinius/1.2.4/bin/rbx", "test")
120
+ end
121
+
122
+ task :test_all => [:test_20, :test_19, :test_rbx]
123
+
124
+ task :prerelease => [:manifest, :test_all, :install]
125
+
126
+ task :benchmark_all do
127
+ with_vms("benchmark CLIENT=libm")
128
+ end
129
+
130
+ def run(cmd, reason)
131
+ puts reason
132
+ puts cmd
133
+ raise "'#{cmd}' failed" unless system(cmd)
134
+ end
data/TODO ADDED
@@ -0,0 +1 @@
1
+ * Remove SWIG and modify libmemcached to accept and return Ruby objects directly
@@ -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)
data/ext/extconf.rb ADDED
@@ -0,0 +1,78 @@
1
+ require 'mkmf'
2
+ require 'rbconfig'
3
+
4
+ unless find_header('sasl/sasl.h')
5
+ abort 'Please install SASL to continue. The package is called libsasl2-dev on Ubuntu and cyrus-sasl on Gentoo.'
6
+ end
7
+
8
+ HERE = File.expand_path(File.dirname(__FILE__))
9
+ BUNDLE_PATH = Dir.glob("libmemcached-*").first
10
+
11
+ SOLARIS_32 = RbConfig::CONFIG['target'] == "i386-pc-solaris2.10"
12
+ BSD = RbConfig::CONFIG['host_os'].downcase =~ /bsd/
13
+
14
+ $CFLAGS = "#{RbConfig::CONFIG['CFLAGS']} #{$CFLAGS}".gsub("$(cflags)", "").gsub("-fno-common", "").gsub("-Werror=declaration-after-statement", "")
15
+ $CFLAGS << " -std=gnu99" if SOLARIS_32
16
+ $CFLAGS << " -I/usr/local/include" if BSD
17
+ $EXTRA_CONF = " --disable-64bit" if SOLARIS_32
18
+ $LDFLAGS = "#{RbConfig::CONFIG['LDFLAGS']} #{$LDFLAGS} -L#{RbConfig::CONFIG['libdir']}".gsub("$(ldflags)", "").gsub("-fno-common", "")
19
+ $CXXFLAGS = "#{RbConfig::CONFIG['CXXFLAGS']} -std=gnu++98"
20
+ $CC = "CC=#{RbConfig::MAKEFILE_CONFIG["CC"].inspect}"
21
+
22
+ # JRuby's default configure options can't build libmemcached properly
23
+ LIBM_CFLAGS = defined?(JRUBY_VERSION) ? "-fPIC -g -O2" : $CFLAGS
24
+ LIBM_LDFLAGS = defined?(JRUBY_VERSION) ? "-fPIC -lsasl2 -lm" : $LDFLAGS
25
+
26
+ GMAKE_CMD = RbConfig::CONFIG['host_os'].downcase =~ /bsd|solaris/ ? "gmake" : "make"
27
+ TAR_CMD = SOLARIS_32 ? 'gtar' : 'tar'
28
+ PATCH_CMD = SOLARIS_32 ? 'gpatch' : 'patch'
29
+
30
+ if ENV['DEBUG']
31
+ puts "Setting debug flags."
32
+ $CFLAGS << " -O0 -ggdb -DHAVE_DEBUG"
33
+ $EXTRA_CONF = ""
34
+ end
35
+
36
+ def check_libmemcached
37
+ return if ENV["EXTERNAL_LIB"]
38
+
39
+ $includes = " -I#{HERE}/include"
40
+ $libraries = " -L#{HERE}/lib"
41
+ $CFLAGS = "#{$includes} #{$libraries} #{$CFLAGS}"
42
+ $LDFLAGS = "-lsasl2 -lm #{$libraries} #{$LDFLAGS}"
43
+ $LIBPATH = ["#{HERE}/lib"]
44
+ $DEFLIBPATH = [] unless SOLARIS_32
45
+
46
+ Dir.chdir(HERE) do
47
+ Dir.chdir(BUNDLE_PATH) do
48
+ ts_now=Time.now.strftime("%Y%m%d%H%M.%S")
49
+ run("find . | xargs touch -t #{ts_now}", "Touching all files so autoconf doesn't run.")
50
+ run("env CFLAGS='-fPIC #{LIBM_CFLAGS}' LDFLAGS='-fPIC #{LIBM_LDFLAGS}' ./configure --prefix=#{HERE} --libdir=#{HERE}/lib --without-memcached --disable-shared --disable-utils --disable-dependency-tracking #{$CC} #{$EXTRA_CONF} 2>&1", "Configuring libmemcached.")
51
+ end
52
+
53
+ Dir.chdir(BUNDLE_PATH) do
54
+ #Running the make command in another script invoked by another shell command solves the "cd ." issue on FreeBSD 6+
55
+ run("GMAKE_CMD='#{GMAKE_CMD}' CXXFLAGS='#{$CXXFLAGS} #{LIBM_CFLAGS}' SOURCE_DIR='#{BUNDLE_PATH}' HERE='#{HERE}' ruby ../extconf-make.rb", "Making libmemcached.")
56
+ end
57
+ end
58
+
59
+ # Absolutely prevent the linker from picking up any other libmemcached
60
+ Dir.chdir("#{HERE}/lib") do
61
+ system("cp -f libmemcached.a libmemcached_gem.a")
62
+ system("cp -f libmemcached.la libmemcached_gem.la")
63
+ end
64
+ $LIBS << " -lmemcached_gem -lsasl2"
65
+ end
66
+
67
+ def run(cmd, reason)
68
+ puts reason
69
+ puts cmd
70
+ raise "'#{cmd}' failed" unless system(cmd)
71
+ end
72
+
73
+ check_libmemcached
74
+
75
+ $CFLAGS << " -Os"
76
+ create_makefile 'rlibmemcached'
77
+ run("mv Makefile Makefile.in", "Copy Makefile")
78
+ run("sed 's/-I.opt.local.include//' Makefile.in > Makefile", "Remove MacPorts from the include path")
@@ -0,0 +1,7 @@
1
+ Brian Aker, brian@tangent.org -- Client Library, Tools
2
+ Mark Atwood, -- Tools, Docs
3
+ Patrick Galbraith, -- C++ Interface
4
+ Tim Bunce, -- Docs
5
+ Trond Norbye, trond.norbye@sun.com -- Binary protocol, Misc
6
+ Yin Chen, -- Ketama Work
7
+ Toru Maesaka, dev@torum.net -- Stats analysis
@@ -0,0 +1,32 @@
1
+ Software License Agreement (BSD License)
2
+
3
+ Copyright (c) 2007, TangentOrg (Brian Aker)
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are
8
+ met:
9
+
10
+ * Redistributions of source code must retain the above copyright
11
+ notice, this list of conditions and the following disclaimer.
12
+
13
+ * Redistributions in binary form must reproduce the above
14
+ copyright notice, this list of conditions and the following disclaimer
15
+ in the documentation and/or other materials provided with the
16
+ distribution.
17
+
18
+ * Neither the name of TangentOrg nor the names of its
19
+ contributors may be used to endorse or promote products derived from
20
+ this software without specific prior written permission.
21
+
22
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.