Sha256: e6e68479a4230607e3f599bb7ce2dda8243344d4dddade765d5598c5df4dc6c8

Contents?: true

Size: 906 Bytes

Versions: 20

Compression:

Stored size: 906 Bytes

Contents

module RSocks

  STATE_LIST = [:handshake, :auth, :connect, :start]

  class StateMachine

    attr_reader :current_state

    def initialize
      @max = 3
      @state_num = 0
      @current_state = RSocks::STATE_LIST[@state_num]
    end

    def handshake?
      current_state == :handshake
    end

    def auth?
      current_state == :auth
    end

    def connect?
      current_state == :connect
    end

    def start?
      current_state == :start
    end

    def auth!
      @state_num = 1
      @current_state = RSocks::STATE_LIST[@state_num]
    end

    def connect!
      @state_num = 2
      @current_state = RSocks::STATE_LIST[@state_num]
    end

    def start!
      @state_num = 3
      @current_state = RSocks::STATE_LIST[@state_num]
    end

    def state_changed
      @state_num += 1 unless @state_num >= @max
      @current_state = RSocks::STATE_LIST[@state_num]
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
r_socks-0.2.11 lib/r_socks/state_machine.rb
r_socks-0.2.10 lib/r_socks/state_machine.rb
r_socks-0.2.9 lib/r_socks/state_machine.rb
r_socks-0.2.8 lib/r_socks/state_machine.rb
r_socks-0.2.7 lib/r_socks/state_machine.rb
r_socks-0.2.6 lib/r_socks/state_machine.rb
r_socks-0.2.5 lib/r_socks/state_machine.rb
r_socks-0.2.4 lib/r_socks/state_machine.rb
r_socks-0.2.3 lib/r_socks/state_machine.rb
r_socks-0.2.2 lib/r_socks/state_machine.rb
r_socks-0.2.1 lib/r_socks/state_machine.rb
r_socks-0.2.0 lib/r_socks/state_machine.rb
r_socks-0.1.8 lib/r_socks/state_machine.rb
r_socks-0.1.7 lib/r_socks/state_machine.rb
r_socks-0.1.6 lib/r_socks/state_machine.rb
r_socks-0.1.5 lib/r_socks/state_machine.rb
r_socks-0.1.4 lib/r_socks/state_machine.rb
r_socks-0.1.3 lib/r_socks/state_machine.rb
r_socks-0.1.2 lib/r_socks/state_machine.rb
r_socks-0.1.1 lib/r_socks/state_machine.rb