Module Thrift::EventMachineConnection
In: lib/thrift_client/event_machine.rb
lib/thrift_client/event_machine.rb

Methods

Included Modules

EM::Deferrable EM::Deferrable

Constants

GARBAGE_BUFFER_SIZE = 4096
GARBAGE_BUFFER_SIZE = 4096

Public Class methods

[Source]

    # File lib/thrift_client/event_machine.rb, line 52
52:     def self.connect(host='localhost', port=9090, timeout=5, &block)
53:       EM.connect(host, port, self, host, port) do |conn|
54:         conn.pending_connect_timeout = timeout
55:       end
56:     end

[Source]

    # File lib/thrift_client/event_machine.rb, line 52
52:     def self.connect(host='localhost', port=9090, timeout=5, &block)
53:       EM.connect(host, port, self, host, port) do |conn|
54:         conn.pending_connect_timeout = timeout
55:       end
56:     end

[Source]

    # File lib/thrift_client/event_machine.rb, line 67
67:     def initialize(host, port=9090)
68:       @host, @port = host, port
69:       @index = 0
70:       @disconnected = 'not connected'
71:       @buf = ''
72:     end

[Source]

    # File lib/thrift_client/event_machine.rb, line 67
67:     def initialize(host, port=9090)
68:       @host, @port = host, port
69:       @index = 0
70:       @disconnected = 'not connected'
71:       @buf = ''
72:     end

Public Instance methods

[Source]

    # File lib/thrift_client/event_machine.rb, line 81
81:     def blocking_read(size)
82:       raise IOError, "lost connection to #{@host}:#{@port}: #{@disconnected}" if @disconnected
83:       if can_read?(size)
84:         yank(size)
85:       else
86:         raise ArgumentError, "Unexpected state" if @size or @callback
87: 
88:         fiber = Fiber.current
89:         @size = size
90:         @callback = proc { |data|
91:           fiber.resume(data)
92:         }
93:         Fiber.yield
94:       end
95:     end

[Source]

    # File lib/thrift_client/event_machine.rb, line 81
81:     def blocking_read(size)
82:       raise IOError, "lost connection to #{@host}:#{@port}: #{@disconnected}" if @disconnected
83:       if can_read?(size)
84:         yank(size)
85:       else
86:         raise ArgumentError, "Unexpected state" if @size or @callback
87: 
88:         fiber = Fiber.current
89:         @size = size
90:         @callback = proc { |data|
91:           fiber.resume(data)
92:         }
93:         Fiber.yield
94:       end
95:     end

[Source]

     # File lib/thrift_client/event_machine.rb, line 127
127:     def can_read?(size)
128:       @buf.size >= @index + size
129:     end

[Source]

     # File lib/thrift_client/event_machine.rb, line 127
127:     def can_read?(size)
128:       @buf.size >= @index + size
129:     end

[Source]

    # File lib/thrift_client/event_machine.rb, line 74
74:     def close
75:       trap do
76:         @disconnected = 'closed'
77:         close_connection(true)
78:       end
79:     end

[Source]

    # File lib/thrift_client/event_machine.rb, line 74
74:     def close
75:       trap do
76:         @disconnected = 'closed'
77:         close_connection(true)
78:       end
79:     end

[Source]

     # File lib/thrift_client/event_machine.rb, line 110
110:     def connected?
111:       !@disconnected
112:     end

[Source]

     # File lib/thrift_client/event_machine.rb, line 110
110:     def connected?
111:       !@disconnected
112:     end

[Source]

     # File lib/thrift_client/event_machine.rb, line 114
114:     def connection_completed
115:       @disconnected = nil
116:       succeed
117:     end

[Source]

     # File lib/thrift_client/event_machine.rb, line 114
114:     def connection_completed
115:       @disconnected = nil
116:       succeed
117:     end

[Source]

     # File lib/thrift_client/event_machine.rb, line 97
 97:     def receive_data(data)
 98:       trap do
 99:         (@buf) << data
100: 
101:         if @callback and can_read?(@size)
102:           callback = @callback
103:           data = yank(@size)
104:           @callback = @size = nil
105:           callback.call(data)
106:         end
107:       end
108:     end

[Source]

     # File lib/thrift_client/event_machine.rb, line 97
 97:     def receive_data(data)
 98:       trap do
 99:         (@buf) << data
100: 
101:         if @callback and can_read?(@size)
102:           callback = @callback
103:           data = yank(@size)
104:           @callback = @size = nil
105:           callback.call(data)
106:         end
107:       end
108:     end

[Source]

    # File lib/thrift_client/event_machine.rb, line 58
58:     def trap
59:       begin
60:         yield
61:       rescue Exception => ex
62:         puts ex.message
63:         puts ex.backtrace.join("\n")
64:       end
65:     end

[Source]

    # File lib/thrift_client/event_machine.rb, line 58
58:     def trap
59:       begin
60:         yield
61:       rescue Exception => ex
62:         puts ex.message
63:         puts ex.backtrace.join("\n")
64:       end
65:     end

[Source]

     # File lib/thrift_client/event_machine.rb, line 119
119:     def unbind
120:       if !@disconnected
121:         @disconnected = 'unbound'
122:       else
123:         fail
124:       end
125:     end

[Source]

     # File lib/thrift_client/event_machine.rb, line 119
119:     def unbind
120:       if !@disconnected
121:         @disconnected = 'unbound'
122:       else
123:         fail
124:       end
125:     end

[Validate]