Class: Wee::Session::ThreadSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/wee/session.rb

Overview

This serializer ensures that all requests of a session are executed within the same thread. This is required if continuations are going to be used.

You can run multiple sessions within the same ThreadSerializer, or allocate one ThreadSerializer (and as such one Thread) per session as you want.

Instance Method Summary collapse

Constructor Details

#initializeThreadSerializer

Returns a new instance of ThreadSerializer.



33
34
35
36
37
38
39
40
41
42
# File 'lib/wee/session.rb', line 33

def initialize
  @in, @out = Queue.new, Queue.new
  @thread = Thread.new {
    Thread.abort_on_exception = true
    while true 
      env = @in.pop
      @out.push(env['wee.session'].call(env))
    end
  }
end

Instance Method Details

#call(env) ⇒ Object



44
45
46
47
# File 'lib/wee/session.rb', line 44

def call(env)
  @in.push(env)
  @out.pop
end