hirlite 0.0.1.3 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 08c6b72ffe8ba3eecbcf7b1ca1150c86e6a56592
4
- data.tar.gz: 67d2dd1febbf2f5e729fa7d93c5477572681d273
3
+ metadata.gz: 6438f8e71c00a0088e572db6afc4c7e4d9f45fbe
4
+ data.tar.gz: e73519a70326bb1b5348e721f20f74e2c897c056
5
5
  SHA512:
6
- metadata.gz: 85b6bc9d6db7f62a630df99b990e9e63af7272300ef758e63c3c0b4d21fec436862cf3b1530daf6199ea1699e8ef26f8a511869c50b2e45f0d31c4dd5c0f9372
7
- data.tar.gz: 456d4361265c9189d639ea0a4e44a3c55ec3524c1e1bd73f1eadf3ee79ad5f5b7ef088161913e0e9ac577841b370b672b8fe1011d7bc5b82a5116f24870589a5
6
+ metadata.gz: 572064e64e3910a85a0f78076c95adb1fcad9d2fc4aed55039b203bd87eea9c8ab238fe82e3bd908de751df3627fa2b861bb7c87c4d19252aa85dd55c24edf8d
7
+ data.tar.gz: 3f8a2d8509c6fb564dcfd94b4e52a08e6926eb8a64703e943b7d4060e100b50decaad5fccdb818acc6cd580f561462de08704506b1293ab8bb9aab8f9fc4e699
@@ -243,9 +243,6 @@ static VALUE createDecodedString(char *str, size_t len) {
243
243
 
244
244
  static VALUE reply_to_value(rliteReply *reply) {
245
245
  if (reply->type == RLITE_REPLY_STATUS || reply->type == RLITE_REPLY_STRING) {
246
- if (reply->type == RLITE_REPLY_STATUS && reply->len == 2 && memcmp(reply->str, "OK", 2) == 0) {
247
- return Qtrue;
248
- }
249
246
  return createDecodedString(reply->str, reply->len);
250
247
  }
251
248
  if (reply->type == RLITE_REPLY_NIL) {
@@ -0,0 +1,64 @@
1
+ require "redis/connection/registry"
2
+ require "redis/errors"
3
+ require "hirlite"
4
+ require "timeout"
5
+
6
+ class Rlite
7
+ module Connection
8
+ class Hirlite
9
+
10
+ def self.connect(config)
11
+ connection = ::Hirlite::Rlite.new
12
+ connect_timeout = (config.fetch(:connect_timeout, 0) * 1_000_000).to_i
13
+
14
+ if config[:scheme] == "unix"
15
+ connection.connect_unix(config[:path], connect_timeout)
16
+ else
17
+ connection.connect(config[:host], config[:port], connect_timeout)
18
+ end
19
+
20
+ instance = new(connection)
21
+ instance.timeout = config[:timeout]
22
+ instance
23
+ rescue Errno::ETIMEDOUT
24
+ raise TimeoutError
25
+ end
26
+
27
+ def initialize(connection)
28
+ @connection = connection
29
+ end
30
+
31
+ def connected?
32
+ @connection && @connection.connected?
33
+ end
34
+
35
+ def timeout=(timeout)
36
+ # Hirlite works with microsecond timeouts
37
+ @connection.timeout = Integer(timeout * 1_000_000)
38
+ end
39
+
40
+ def disconnect
41
+ @connection.disconnect
42
+ @connection = nil
43
+ end
44
+
45
+ def write(command)
46
+ @connection.write(command.flatten(1))
47
+ rescue Errno::EAGAIN
48
+ raise TimeoutError
49
+ end
50
+
51
+ def read
52
+ reply = @connection.read
53
+ reply = CommandError.new(reply.message) if reply.is_a?(RuntimeError)
54
+ reply
55
+ rescue Errno::EAGAIN
56
+ raise TimeoutError
57
+ rescue RuntimeError => err
58
+ raise ProtocolError.new(err.message)
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ Redis::Connection.drivers << Rlite::Connection::Hirlite
data/lib/hirlite/rlite.rb CHANGED
@@ -8,11 +8,14 @@ module Hirlite
8
8
 
9
9
  def write(command)
10
10
  super
11
- @responses.push self.class.superclass.instance_method(:read).bind(self).call
11
+ @responses.push read_ext
12
12
  end
13
13
 
14
- def read
14
+ def read_ruby
15
15
  @responses.shift
16
16
  end
17
+
18
+ alias_method :read_ext, :read
19
+ alias_method :read, :read_ruby
17
20
  end
18
21
  end
@@ -1,3 +1,3 @@
1
1
  module Hirlite
2
- VERSION = "0.0.1.3"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hirlite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.3
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Waisbrot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-01 00:00:00.000000000 Z
11
+ date: 2015-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -67,6 +67,7 @@ files:
67
67
  - ext/hirlite_ext/hirlite_ext.h
68
68
  - ext/hirlite_ext/rlite.c
69
69
  - lib/hirlite.rb
70
+ - lib/hirlite/connection.rb
70
71
  - lib/hirlite/rlite.rb
71
72
  - lib/hirlite/version.rb
72
73
  - vendor/rlite/Makefile