Class: Pastry::Backend
- Inherits:
-
Thin::Backends::Base
- Object
- Thin::Backends::Base
- Pastry::Backend
- Defined in:
- lib/pastry.rb
Instance Method Summary collapse
- #disconnect ⇒ Object
-
#initialize(options = {}) ⇒ Backend
constructor
A new instance of Backend.
- #initialize_connection(connection) ⇒ Object
- #start(server) ⇒ Object
- #trap_signals! ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Backend
257 258 259 260 |
# File 'lib/pastry.rb', line 257 def initialize = {} super() @timeout = .fetch(:timeout, 30) end |
Instance Method Details
#disconnect ⇒ Object
297 298 299 |
# File 'lib/pastry.rb', line 297 def disconnect EM.stop_server(@signature) end |
#initialize_connection(connection) ⇒ Object
271 272 273 274 |
# File 'lib/pastry.rb', line 271 def initialize_connection connection super connection.comm_inactivity_timeout = @timeout end |
#start(server) ⇒ Object
262 263 264 265 266 267 268 269 |
# File 'lib/pastry.rb', line 262 def start server @stopping = false @running = true @server = server trap_signals! @signature = EM.attach_server_socket(server, Thin::Connection, &method(:initialize_connection)) end |
#trap_signals! ⇒ Object
276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 |
# File 'lib/pastry.rb', line 276 def trap_signals! # ignore SIGCHLD, can be overriden by app. Signal.trap('CHLD', 'IGNORE') # close connections and stop gracefully %w(HUP QUIT).each do |signal| Signal.trap(signal) do stop EM.add_periodic_timer(1) { Kernel.exit! if @connections.empty? } end end # hard stop, discard requests and quit %w(INT TERM).each do |signal| Signal.trap(signal) do stop! Kernel.exit! end end end |