ruby-redis 0.0.1

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 (48) hide show
  1. data/LICENSE +9 -0
  2. data/README +90 -0
  3. data/bin/ruby-redis +12 -0
  4. data/bin/ruby-redis.compiled.rbc +243 -0
  5. data/lib/redis/bin.rb +74 -0
  6. data/lib/redis/bin.rbc +1325 -0
  7. data/lib/redis/buftok.rbc +2658 -0
  8. data/lib/redis/config.rb +46 -0
  9. data/lib/redis/config.rbc +1009 -0
  10. data/lib/redis/connection.rb +69 -0
  11. data/lib/redis/connection.rbc +1354 -0
  12. data/lib/redis/database.rb +109 -0
  13. data/lib/redis/database.rbc +2275 -0
  14. data/lib/redis/hashes.rb +72 -0
  15. data/lib/redis/hashes.rbc +1843 -0
  16. data/lib/redis/hiredis.rbc +658 -0
  17. data/lib/redis/keys.rb +165 -0
  18. data/lib/redis/keys.rbc +3386 -0
  19. data/lib/redis/lists.rb +227 -0
  20. data/lib/redis/lists.rbc +5241 -0
  21. data/lib/redis/logger.rb +81 -0
  22. data/lib/redis/logger.rbc +2106 -0
  23. data/lib/redis/protocol.rb +170 -0
  24. data/lib/redis/protocol.rbc +3735 -0
  25. data/lib/redis/pubsub.rb +153 -0
  26. data/lib/redis/pubsub.rbc +3447 -0
  27. data/lib/redis/reader.rb +164 -0
  28. data/lib/redis/reader.rbc +2769 -0
  29. data/lib/redis/send.rbc +1268 -0
  30. data/lib/redis/sender.rb +49 -0
  31. data/lib/redis/sender.rbc +1057 -0
  32. data/lib/redis/server.rb +62 -0
  33. data/lib/redis/server.rbc +1177 -0
  34. data/lib/redis/sets.rb +105 -0
  35. data/lib/redis/sets.rbc +2800 -0
  36. data/lib/redis/strict.rb +67 -0
  37. data/lib/redis/strict.rbc +1419 -0
  38. data/lib/redis/strings.rb +144 -0
  39. data/lib/redis/strings.rbc +3338 -0
  40. data/lib/redis/synchrony.rb +58 -0
  41. data/lib/redis/synchrony.rbc +1397 -0
  42. data/lib/redis/version.rb +7 -0
  43. data/lib/redis/version.rbc +180 -0
  44. data/lib/redis/zsets.rb +281 -0
  45. data/lib/redis/zsets.rbc +6596 -0
  46. data/lib/redis.rb +215 -0
  47. data/lib/redis.rbc +4391 -0
  48. metadata +117 -0
@@ -0,0 +1,58 @@
1
+ require File.expand_path '../redis', File.dirname(__FILE__)
2
+ require 'fiber'
3
+
4
+ class Redis
5
+
6
+ # Compatible with em-synchrony
7
+ # Not included by default, use:
8
+ # require 'redis/synchrony'
9
+
10
+ class Synchrony
11
+
12
+ def self.sync(df)
13
+ f = Fiber.current
14
+ xback = proc {|r|
15
+ if f == Fiber.current
16
+ return r
17
+ else
18
+ f.resume r
19
+ end
20
+ }
21
+ df.callback &xback
22
+ df.errback &xback
23
+ Fiber.yield
24
+ end
25
+
26
+ attr_accessor :timeout
27
+
28
+ def initialize redis
29
+ @redis = redis
30
+ @timeout = nil
31
+ end
32
+
33
+ def pubsub_callback
34
+ raise 'only available async'
35
+ end
36
+
37
+ def method_missing method, *args, &block
38
+ result = @redis.send method, *args, &block
39
+ if result.respond_to? :callback and result.respond_to? :errback
40
+ result.timeout @timeout if @timeout and result.respond_to? :timeout
41
+ result = self.class.sync result
42
+ raise result if Exception === result
43
+ end
44
+ result
45
+ end
46
+ end
47
+
48
+ def self.synchrony blk=nil, tail=nil, &block
49
+ blk ||= block
50
+ context = Proc.new { Fiber.new { blk.call }.resume }
51
+ EventMachine.run(context, tail)
52
+ end
53
+
54
+ def synchrony
55
+ @synchrony ||= Synchrony.new self
56
+ end
57
+
58
+ end