juggernaut 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,10 +1,11 @@
1
+ require 'rubygems'
1
2
  require 'logger'
2
3
  require 'eventmachine'
3
4
  require 'json'
4
5
  $:.unshift(File.dirname(__FILE__))
5
6
 
6
7
  module Juggernaut
7
- VERSION = '0.5.4'
8
+ VERSION = '0.5.5'
8
9
 
9
10
  class JuggernautError < StandardError #:nodoc:
10
11
  end
@@ -145,9 +145,10 @@ module Juggernaut
145
145
  params << "session_id=#{session_id}" if session_id
146
146
  channels.each {|chan| params << "channels[]=#{chan}" }
147
147
  url.query = params.join('&')
148
- begin
148
+ begin
149
149
  open(url.to_s, "User-Agent" => "Ruby/#{RUBY_VERSION}")
150
- rescue
150
+ rescue => e
151
+ logger.debug("Bad response from #{url.to_s}: #{e}")
151
152
  return false
152
153
  end
153
154
  true
@@ -31,7 +31,7 @@ module Juggernaut
31
31
  parse_options
32
32
 
33
33
  if !File.exists?(config_path)
34
- puts "You must generate a config file (juggernaut -g)"
34
+ puts "You must generate a config file (juggernaut -g filename.yml)"
35
35
  exit
36
36
  end
37
37
 
@@ -62,10 +62,17 @@ module Juggernaut
62
62
  stop
63
63
  exit
64
64
  }
65
+
66
+ if options[:descriptor_table_size]
67
+ EM.epoll
68
+ new_size = EM.set_descriptor_table_size( options[:descriptor_table_size] )
69
+ logger.debug "New descriptor-table size is #{new_size}"
70
+ end
65
71
 
66
72
  EventMachine::run {
67
73
  EventMachine::add_periodic_timer( options[:cleanup_timer].to_i ) { Juggernaut::Client.send_logouts_after_timeout }
68
74
  EventMachine::start_server(options[:host], options[:port].to_i, Juggernaut::Server)
75
+ EM.set_effective_user( options[:user] ) if options[:user]
69
76
  }
70
77
  end
71
78
 
@@ -105,6 +112,10 @@ module Juggernaut
105
112
  opts.on("-p", "--port PORT", Integer, "Specify port", "(default: #{options[:port]})") do |v|
106
113
  options[:port] = v
107
114
  end
115
+
116
+ opts.on("-s", "--fdsize SIZE", Integer, "Set the file descriptor size an user epoll() on Linux", "(default: use select() which is limited to 1024 clients)") do |v|
117
+ options[:descriptor_table_size] = v
118
+ end
108
119
 
109
120
  opts.separator ""; opts.separator "Daemonization:"
110
121
 
@@ -116,7 +127,7 @@ module Juggernaut
116
127
  options[:daemonize] = v
117
128
  end
118
129
 
119
- opts.on("-k", "--kill PORT", String, "Kill specified running daemons - leave blank to kill all.") do |v|
130
+ opts.on("-k", "--kill PORT", String, :OPTIONAL, "Kill specified running daemons - leave blank to kill all.") do |v|
120
131
  options[:kill] = v
121
132
  end
122
133
 
@@ -350,13 +350,15 @@ module Juggernaut
350
350
  url = URI.parse(options[:broadcast_query_login_url])
351
351
  params = []
352
352
  params << "client_id=#{@request[:client_id]}" if @request[:client_id]
353
- params << "session_id=#{@request[:session_id]}" if @request[:session_id]
353
+ params << "session_id=#{URI.escape(@request[:session_id])}" if @request[:session_id]
354
354
  params << "type=#{@request[:type]}"
355
355
  params << "command=#{@request[:command]}"
356
356
  (@request[:channels] || []).each {|chan| params << "channels[]=#{chan}" }
357
357
  url.query = params.join('&')
358
358
  begin
359
359
  open(url.to_s, "User-Agent" => "Ruby/#{RUBY_VERSION}")
360
+ rescue Timeout::Error
361
+ return false
360
362
  rescue
361
363
  return false
362
364
  end
metadata CHANGED
@@ -1,66 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: juggernaut
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.5.4
7
- date: 2008-04-04 00:00:00 +01:00
8
- summary: FIX (describe your package)
9
- require_paths:
10
- - lib
11
- email: info@eribium.org
12
- homepage: http://juggernaut.rubyforge.org
13
- rubyforge_project: juggernaut
14
- description: FIX (describe your package)
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.5.5
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Alex MacCaw
31
- files:
32
- - History.txt
33
- - Manifest.txt
34
- - README.txt
35
- - Rakefile
36
- - bin/juggernaut
37
- - lib/juggernaut.rb
38
- - lib/juggernaut/client.rb
39
- - lib/juggernaut/message.rb
40
- - lib/juggernaut/miscel.rb
41
- - lib/juggernaut/runner.rb
42
- - lib/juggernaut/server.rb
43
- - lib/juggernaut/utils.rb
44
- test_files: []
45
-
46
- rdoc_options:
47
- - --main
48
- - README.txt
49
- extra_rdoc_files:
50
- - History.txt
51
- - Manifest.txt
52
- - README.txt
53
- executables:
54
- - juggernaut
55
- extensions: []
56
-
57
- requirements: []
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
58
11
 
12
+ date: 2008-08-03 00:00:00 +01:00
13
+ default_executable:
59
14
  dependencies:
60
15
  - !ruby/object:Gem::Dependency
61
16
  name: eventmachine
17
+ type: :runtime
62
18
  version_requirement:
63
- version_requirements: !ruby/object:Gem::Version::Requirement
19
+ version_requirements: !ruby/object:Gem::Requirement
64
20
  requirements:
65
21
  - - ">="
66
22
  - !ruby/object:Gem::Version
@@ -68,8 +24,9 @@ dependencies:
68
24
  version:
69
25
  - !ruby/object:Gem::Dependency
70
26
  name: json
27
+ type: :runtime
71
28
  version_requirement:
72
- version_requirements: !ruby/object:Gem::Version::Requirement
29
+ version_requirements: !ruby/object:Gem::Requirement
73
30
  requirements:
74
31
  - - ">="
75
32
  - !ruby/object:Gem::Version
@@ -77,10 +34,63 @@ dependencies:
77
34
  version:
78
35
  - !ruby/object:Gem::Dependency
79
36
  name: hoe
37
+ type: :development
80
38
  version_requirement:
81
- version_requirements: !ruby/object:Gem::Version::Requirement
39
+ version_requirements: !ruby/object:Gem::Requirement
82
40
  requirements:
83
41
  - - ">="
84
42
  - !ruby/object:Gem::Version
85
- version: 1.5.1
43
+ version: 1.7.0
86
44
  version:
45
+ description: FIX (describe your package)
46
+ email: info@eribium.org
47
+ executables:
48
+ - juggernaut
49
+ extensions: []
50
+
51
+ extra_rdoc_files:
52
+ - History.txt
53
+ - Manifest.txt
54
+ - README.txt
55
+ files:
56
+ - History.txt
57
+ - Manifest.txt
58
+ - README.txt
59
+ - Rakefile
60
+ - bin/juggernaut
61
+ - lib/juggernaut.rb
62
+ - lib/juggernaut/client.rb
63
+ - lib/juggernaut/message.rb
64
+ - lib/juggernaut/miscel.rb
65
+ - lib/juggernaut/runner.rb
66
+ - lib/juggernaut/server.rb
67
+ - lib/juggernaut/utils.rb
68
+ has_rdoc: true
69
+ homepage: http://juggernaut.rubyforge.org
70
+ post_install_message:
71
+ rdoc_options:
72
+ - --main
73
+ - README.txt
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: "0"
81
+ version:
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: "0"
87
+ version:
88
+ requirements: []
89
+
90
+ rubyforge_project: juggernaut
91
+ rubygems_version: 1.2.0
92
+ signing_key:
93
+ specification_version: 2
94
+ summary: FIX (describe your package)
95
+ test_files: []
96
+