rdkafka 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/Rakefile +1 -1
- data/lib/rdkafka/ffi.rb +6 -1
- data/lib/rdkafka/producer.rb +12 -2
- data/lib/rdkafka/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05e07e0a842a9c43a3f146ab17b7c9a6a5199695
|
4
|
+
data.tar.gz: aaf3de6b32ee405e4b3154931fa8faa997c1f6ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99c48f6357f58933fbe4d7473b6331b3b02e7e902d24edf3d7361e6c12ce647d9c6055c1882c7eb4a481dab713680f0b09bd3922c5a265c9e032c36dda80cd8f
|
7
|
+
data.tar.gz: d62fbdb64afb51f3027f7764b29ddc3c7857fe5c771a4c49bc799cfacaf67b662de568e20ee3f3706068062f712e6aed2b3ac58e0f1e009357fb67c7ae965a9d
|
data/ext/Rakefile
CHANGED
@@ -18,7 +18,7 @@ task :default => :clean do
|
|
18
18
|
end
|
19
19
|
lib_path = File.join(File.dirname(__FILE__), "ports/#{recipe.host}/librdkafka/#{Rdkafka::LIBRDKAFKA_VERSION}/lib/librdkafka.#{from_extension}")
|
20
20
|
FileUtils.mv(lib_path, File.join(File.dirname(__FILE__), "librdkafka.#{to_extension}"))
|
21
|
-
# Cleanup files created miniportile we don't need in the gem
|
21
|
+
# Cleanup files created by miniportile we don't need in the gem
|
22
22
|
FileUtils.rm_rf File.join(File.dirname(__FILE__), "tmp")
|
23
23
|
FileUtils.rm_rf File.join(File.dirname(__FILE__), "ports")
|
24
24
|
end
|
data/lib/rdkafka/ffi.rb
CHANGED
@@ -35,6 +35,10 @@ module Rdkafka
|
|
35
35
|
self[:err]
|
36
36
|
end
|
37
37
|
|
38
|
+
def topic
|
39
|
+
FFI.rd_kafka_topic_name(self[:rkt])
|
40
|
+
end
|
41
|
+
|
38
42
|
def partition
|
39
43
|
self[:partition]
|
40
44
|
end
|
@@ -60,7 +64,7 @@ module Rdkafka
|
|
60
64
|
end
|
61
65
|
|
62
66
|
def to_s
|
63
|
-
"Message with key '#{key}', payload '#{payload}', partition '#{partition}', offset '#{offset}'"
|
67
|
+
"Message in '#{topic}' with key '#{key}', payload '#{payload}', partition '#{partition}', offset '#{offset}'"
|
64
68
|
end
|
65
69
|
|
66
70
|
def self.release(ptr)
|
@@ -69,6 +73,7 @@ module Rdkafka
|
|
69
73
|
end
|
70
74
|
|
71
75
|
attach_function :rd_kafka_message_destroy, [:pointer], :void
|
76
|
+
attach_function :rd_kafka_topic_name, [:pointer], :string
|
72
77
|
|
73
78
|
# TopicPartition ad TopicPartitionList structs
|
74
79
|
|
data/lib/rdkafka/producer.rb
CHANGED
@@ -62,6 +62,8 @@ module Rdkafka
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
class WaitTimeoutError < RuntimeError; end
|
66
|
+
|
65
67
|
class DeliveryHandle < ::FFI::Struct
|
66
68
|
layout :pending, :bool,
|
67
69
|
:response, :int,
|
@@ -73,10 +75,18 @@ module Rdkafka
|
|
73
75
|
end
|
74
76
|
|
75
77
|
# Wait for the delivery report
|
76
|
-
def wait
|
78
|
+
def wait(timeout_in_seconds=10)
|
79
|
+
timeout = if timeout_in_seconds
|
80
|
+
Time.now.to_i + timeout_in_seconds
|
81
|
+
else
|
82
|
+
nil
|
83
|
+
end
|
77
84
|
loop do
|
78
85
|
if pending?
|
79
|
-
|
86
|
+
if timeout && timeout <= Time.now.to_i
|
87
|
+
raise WaitTimeoutError.new("Waiting for delivery timed out after #{timeout_in_seconds} seconds")
|
88
|
+
end
|
89
|
+
sleep 0.1
|
80
90
|
next
|
81
91
|
elsif self[:response] != 0
|
82
92
|
raise RdkafkaError.new(self[:response])
|
data/lib/rdkafka/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdkafka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thijs Cadier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|