droonga-client 0.1.6 → 0.1.7
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.
- checksums.yaml +7 -0
- data/bin/droonga-request +2 -1
- data/bin/droonga-send +2 -1
- data/doc/text/news.md +7 -2
- data/lib/droonga/client/connection/droonga-protocol/coolio.rb +52 -9
- data/lib/droonga/client/connection/droonga-protocol/thread.rb +3 -1
- data/lib/droonga/client/connection/error.rb +12 -0
- data/lib/droonga/client/version.rb +1 -1
- metadata +62 -40
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ffd6d3d2d200ed371e9796d222810204d63fe573
|
4
|
+
data.tar.gz: dd0ccbf7334fc5f1d17f609c038441cad708fcee
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e08a13f2c2bad4374bec11b277d88b595f3384ee271a8506fa248d29ab493ecbb60e2435c6889a1f5327b30c169ec805816a3f14622129aee2bed75c9c229a07
|
7
|
+
data.tar.gz: de0d11dd6ac42a60dde0821cdc706a2d63b99d5396c60849c077d5ec99b31e3976372fb2abfb3c628610522973e1612e31bdbaaf8b89fcf6f3f08bf580d8c8e1
|
data/bin/droonga-request
CHANGED
@@ -23,7 +23,7 @@ require "droonga/client"
|
|
23
23
|
|
24
24
|
options = {
|
25
25
|
:host => "localhost",
|
26
|
-
:port =>
|
26
|
+
:port => 10031,
|
27
27
|
:tag => "droonga",
|
28
28
|
:protocol => :droonga,
|
29
29
|
:timeout => 1,
|
@@ -35,6 +35,7 @@ options = {
|
|
35
35
|
}
|
36
36
|
|
37
37
|
parser = OptionParser.new
|
38
|
+
parser.version = Droonga::Client::VERSION
|
38
39
|
parser.banner += " REQUEST_JSON_FILE"
|
39
40
|
parser.separator("")
|
40
41
|
parser.separator("Connect:")
|
data/bin/droonga-send
CHANGED
@@ -27,7 +27,7 @@ options.report_request = false
|
|
27
27
|
options.report_throughput = false
|
28
28
|
|
29
29
|
servers = []
|
30
|
-
default_server = "droonga:localhost:
|
30
|
+
default_server = "droonga:localhost:10031/droonga"
|
31
31
|
messages_per_second = Droonga::Client::RateLimiter::NO_LIMIT
|
32
32
|
|
33
33
|
def parse_server(server)
|
@@ -73,6 +73,7 @@ class ThroughputReporter
|
|
73
73
|
end
|
74
74
|
|
75
75
|
parser = OptionParser.new
|
76
|
+
parser.version = Droonga::Client::VERSION
|
76
77
|
parser.banner += " REQUEST_JSON_FILE1 REQUEST_JSON_FILE2 ..."
|
77
78
|
parser.separator("")
|
78
79
|
parser.separator("Connection:")
|
data/doc/text/news.md
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
-
## 0.1.
|
3
|
+
## 0.1.7: 2014-05-29
|
4
4
|
|
5
|
-
*
|
5
|
+
* Updated the default port number, same to `droonga-engine`'s one.
|
6
|
+
|
7
|
+
## 0.1.6: 2014-04-29
|
8
|
+
|
9
|
+
* Supports Droonga's protocol.
|
10
|
+
* Used "Cool.io" backend for Droonga protocol.
|
6
11
|
|
7
12
|
## 0.1.5: 2014-03-29
|
8
13
|
|
@@ -47,14 +47,46 @@ module Droonga
|
|
47
47
|
end
|
48
48
|
|
49
49
|
class Sender < ::Coolio::TCPSocket
|
50
|
-
def initialize(
|
51
|
-
super
|
50
|
+
def initialize(*args)
|
51
|
+
super
|
52
|
+
@connected = false
|
53
|
+
@failed_to_connect = false
|
54
|
+
@buffer = []
|
52
55
|
end
|
53
56
|
|
54
|
-
def
|
57
|
+
def close
|
58
|
+
return if @failed_to_connect
|
59
|
+
super
|
60
|
+
end
|
61
|
+
|
62
|
+
def send(tag, data, &on_error)
|
63
|
+
if @failed_to_connect
|
64
|
+
on_error.call(data)
|
65
|
+
end
|
55
66
|
fluent_message = [tag, Time.now.to_i, data]
|
56
67
|
packed_fluent_message = MessagePackPacker.pack(fluent_message)
|
57
|
-
|
68
|
+
if @connected
|
69
|
+
write(packed_fluent_message)
|
70
|
+
else
|
71
|
+
@buffer << [packed_fluent_message, on_error]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def on_connect
|
76
|
+
@connected = true
|
77
|
+
@buffer.each do |packed_message,|
|
78
|
+
write(packed_message)
|
79
|
+
end
|
80
|
+
@buffer.clear
|
81
|
+
end
|
82
|
+
|
83
|
+
def on_connect_failed
|
84
|
+
@failed_to_connect = true
|
85
|
+
@buffer.each do |packed_message, on_error|
|
86
|
+
_, _, message = MessagePack.unpack(packed_message)
|
87
|
+
on_error.call(message)
|
88
|
+
end
|
89
|
+
@buffer.clear
|
58
90
|
end
|
59
91
|
end
|
60
92
|
|
@@ -70,10 +102,10 @@ module Droonga
|
|
70
102
|
|
71
103
|
def close
|
72
104
|
super
|
73
|
-
@engines.
|
105
|
+
engines = @engines.dup
|
106
|
+
engines.each do |engine|
|
74
107
|
engine.close
|
75
108
|
end
|
76
|
-
@engines.clear
|
77
109
|
end
|
78
110
|
|
79
111
|
def host
|
@@ -154,7 +186,9 @@ module Droonga
|
|
154
186
|
id = message["id"] || generate_id
|
155
187
|
message = message.merge("id" => id,
|
156
188
|
"replyTo" => @receiver.droonga_name)
|
157
|
-
send(message, options)
|
189
|
+
send(message, options) do |error|
|
190
|
+
yield(error)
|
191
|
+
end
|
158
192
|
|
159
193
|
sync = block.nil?
|
160
194
|
if sync
|
@@ -179,8 +213,11 @@ module Droonga
|
|
179
213
|
def subscribe(message, options={}, &block)
|
180
214
|
id = message["id"] || generate_id
|
181
215
|
message = message.merge("id" => id,
|
216
|
+
"replyTo" => @receiver.droonga_name,
|
182
217
|
"from" => @receiver.droonga_name)
|
183
|
-
send(message, options)
|
218
|
+
send(message, options) do |error|
|
219
|
+
yield(error)
|
220
|
+
end
|
184
221
|
|
185
222
|
request = InfiniteRequest.new(@loop)
|
186
223
|
sync = block.nil?
|
@@ -213,7 +250,13 @@ module Droonga
|
|
213
250
|
date = message["date"] || Time.now
|
214
251
|
message = message.merge("id" => id, "date" => date)
|
215
252
|
end
|
216
|
-
@sender.send("#{@tag}.message", message)
|
253
|
+
@sender.send("#{@tag}.message", message) do
|
254
|
+
host = @sender.peeraddr[3]
|
255
|
+
port = @sender.peeraddr[1]
|
256
|
+
detail = message
|
257
|
+
error = ConnectionError.new(host, port, detail)
|
258
|
+
yield(error)
|
259
|
+
end
|
217
260
|
end
|
218
261
|
|
219
262
|
def close
|
@@ -72,8 +72,10 @@ module Droonga
|
|
72
72
|
|
73
73
|
def subscribe(message, options={}, &block)
|
74
74
|
receiver = create_receiver
|
75
|
+
receive_end_point = "#{receiver.host}:#{receiver.port}/droonga"
|
75
76
|
message = message.dup
|
76
|
-
message["
|
77
|
+
message["replyTo"] = receive_end_point
|
78
|
+
message["from"] = receive_end_point
|
77
79
|
send(message, options)
|
78
80
|
|
79
81
|
receive_options = {
|
@@ -33,6 +33,18 @@ module Droonga
|
|
33
33
|
super("Unknown #{@protocol} backend: <#{backend}>: #{detail}")
|
34
34
|
end
|
35
35
|
end
|
36
|
+
|
37
|
+
class ConnectionError < Error
|
38
|
+
attr_reader :host
|
39
|
+
attr_reader :port
|
40
|
+
attr_reader :detail
|
41
|
+
def initialize(host, port, detail)
|
42
|
+
@host = host
|
43
|
+
@port = port
|
44
|
+
@detail = detail
|
45
|
+
super("Failed to connect: <#{@host}:#{@port}>: #{@detail}")
|
46
|
+
end
|
47
|
+
end
|
36
48
|
end
|
37
49
|
end
|
38
50
|
end
|
metadata
CHANGED
@@ -1,104 +1,127 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: droonga-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.7
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Droonga Project
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-05-29 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: msgpack
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: fluent-logger
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - '>='
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: rack
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - '>='
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :runtime
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: yajl-ruby
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
type: :runtime
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: droonga-message-pack-packer
|
60
|
-
requirement:
|
61
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
62
72
|
requirements:
|
63
|
-
- -
|
73
|
+
- - '>='
|
64
74
|
- !ruby/object:Gem::Version
|
65
75
|
version: '0'
|
66
76
|
type: :runtime
|
67
77
|
prerelease: false
|
68
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: bundler
|
71
|
-
requirement:
|
72
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
73
86
|
requirements:
|
74
87
|
- - ~>
|
75
88
|
- !ruby/object:Gem::Version
|
76
89
|
version: '1.3'
|
77
90
|
type: :development
|
78
91
|
prerelease: false
|
79
|
-
version_requirements:
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.3'
|
80
97
|
- !ruby/object:Gem::Dependency
|
81
98
|
name: rake
|
82
|
-
requirement:
|
83
|
-
none: false
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
84
100
|
requirements:
|
85
|
-
- -
|
101
|
+
- - '>='
|
86
102
|
- !ruby/object:Gem::Version
|
87
103
|
version: '0'
|
88
104
|
type: :development
|
89
105
|
prerelease: false
|
90
|
-
version_requirements:
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
91
111
|
- !ruby/object:Gem::Dependency
|
92
112
|
name: packnga
|
93
|
-
requirement:
|
94
|
-
none: false
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
95
114
|
requirements:
|
96
|
-
- -
|
115
|
+
- - '>='
|
97
116
|
- !ruby/object:Gem::Version
|
98
117
|
version: '0'
|
99
118
|
type: :development
|
100
119
|
prerelease: false
|
101
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
102
125
|
description: Droonga client for Ruby
|
103
126
|
email:
|
104
127
|
- droonga@groonga.org
|
@@ -131,27 +154,26 @@ files:
|
|
131
154
|
homepage: https://github.com/droonga/droonga-client-ruby
|
132
155
|
licenses:
|
133
156
|
- LGPL-2.1
|
157
|
+
metadata: {}
|
134
158
|
post_install_message:
|
135
159
|
rdoc_options: []
|
136
160
|
require_paths:
|
137
161
|
- lib
|
138
162
|
required_ruby_version: !ruby/object:Gem::Requirement
|
139
|
-
none: false
|
140
163
|
requirements:
|
141
|
-
- -
|
164
|
+
- - '>='
|
142
165
|
- !ruby/object:Gem::Version
|
143
166
|
version: 1.9.3
|
144
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
168
|
requirements:
|
147
|
-
- -
|
169
|
+
- - '>='
|
148
170
|
- !ruby/object:Gem::Version
|
149
171
|
version: '0'
|
150
172
|
requirements: []
|
151
173
|
rubyforge_project:
|
152
|
-
rubygems_version:
|
174
|
+
rubygems_version: 2.0.14
|
153
175
|
signing_key:
|
154
|
-
specification_version:
|
176
|
+
specification_version: 4
|
155
177
|
summary: Droonga client for Ruby
|
156
178
|
test_files: []
|
157
179
|
has_rdoc:
|