Sha256: 80e32986fdf8de1901b9b6cd58bf7554df172c983c69669558dfa3cfbec8f84f

Contents?: true

Size: 520 Bytes

Versions: 3

Compression:

Stored size: 520 Bytes

Contents

module Reel
  class Request
    # Tracks the state of Reel requests
    class StateMachine
      include Celluloid::FSM

      def initialize(socket)
        @socket   = socket
        @hijacked = false
      end

      default_state :headers

      state :headers, :to => [:body, :hijacked, :closed]
      state :body,    :to => [:headers, :closed]

      state :hijacked do
        @hijacked = true
      end

      state :closed do
        @socket.close unless @hijacked || @socket.closed?
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
reel-0.6.0.pre1 lib/reel/request/state_machine.rb
reel-0.5.0 lib/reel/request/state_machine.rb
reel-0.5.0.pre lib/reel/request/state_machine.rb