Class: Twitter::JSONStream
- Inherits:
-
EventMachine::Connection
- Object
- EventMachine::Connection
- Twitter::JSONStream
- Defined in:
- lib/twitter/json_stream.rb
Constant Summary
- MAX_LINE_LENGTH =
1024*1024
- NF_RECONNECT_START =
network failure reconnections
0.25- NF_RECONNECT_ADD =
0.25- NF_RECONNECT_MAX =
16- AF_RECONNECT_START =
app failure reconnections
10- AF_RECONNECT_MUL =
2- RECONNECT_MAX =
320- RETRIES_MAX =
10- DEFAULT_OPTIONS =
{ :method => 'GET', :path => '/', :content_type => "application/x-www-form-urlencoded", :content => '', :path => '/1/statuses/filter.json', :host => 'stream.twitter.com', :port => 80, :ssl => false, :user_agent => 'TwitterStream', :timeout => 0, :proxy => ENV['HTTP_PROXY'], :auth => nil, :oauth => {}, :filters => [], :params => {}, :auto_reconnect => true }
Instance Attribute Summary (collapse)
-
- (Object) af_last_reconnect
Returns the value of attribute af_last_reconnect.
-
- (Object) code
Returns the value of attribute code.
-
- (Object) headers
Returns the value of attribute headers.
-
- (Object) nf_last_reconnect
Returns the value of attribute nf_last_reconnect.
-
- (Object) proxy
Returns the value of attribute proxy.
-
- (Object) reconnect_retries
Returns the value of attribute reconnect_retries.
Class Method Summary (collapse)
Instance Method Summary (collapse)
- - (Object) connection_completed
- - (Object) each_item(&block)
- - (Object) immediate_reconnect
-
- (JSONStream) initialize(options = {})
constructor
A new instance of JSONStream.
- - (Object) on_close(&block)
- - (Object) on_error(&block)
- - (Object) on_max_reconnects(&block)
- - (Object) on_reconnect(&block)
- - (Object) post_init
-
- (Object) receive_data(data)
Receives raw data from the HTTP connection and pushes it into the HTTP parser which then drives subsequent callbacks.
- - (Object) stop
- - (Object) unbind
Constructor Details
- (JSONStream) initialize(options = {})
A new instance of JSONStream
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/twitter/json_stream.rb', line 67 def initialize = {} @options = DEFAULT_OPTIONS.merge() # merge in case initialize called directly @gracefully_closed = false @nf_last_reconnect = nil @af_last_reconnect = nil @reconnect_retries = 0 @immediate_reconnect = false @on_inited_callback = .delete(:on_inited) @proxy = URI.parse([:proxy]) if [:proxy] end |
Instance Attribute Details
- (Object) af_last_reconnect
Returns the value of attribute af_last_reconnect
45 46 47 |
# File 'lib/twitter/json_stream.rb', line 45 def af_last_reconnect @af_last_reconnect end |
- (Object) code
Returns the value of attribute code
42 43 44 |
# File 'lib/twitter/json_stream.rb', line 42 def code @code end |
- (Object) headers
Returns the value of attribute headers
43 44 45 |
# File 'lib/twitter/json_stream.rb', line 43 def headers @headers end |
- (Object) nf_last_reconnect
Returns the value of attribute nf_last_reconnect
44 45 46 |
# File 'lib/twitter/json_stream.rb', line 44 def nf_last_reconnect @nf_last_reconnect end |
- (Object) proxy
Returns the value of attribute proxy
47 48 49 |
# File 'lib/twitter/json_stream.rb', line 47 def proxy @proxy end |
- (Object) reconnect_retries
Returns the value of attribute reconnect_retries
46 47 48 |
# File 'lib/twitter/json_stream.rb', line 46 def reconnect_retries @reconnect_retries end |
Class Method Details
+ (Object) connect(options = {})
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/twitter/json_stream.rb', line 49 def self.connect = {} [:port] = 443 if [:ssl] && !.has_key?(:port) = DEFAULT_OPTIONS.merge() host = [:host] port = [:port] if [:proxy] proxy_uri = URI.parse([:proxy]) host = proxy_uri.host port = proxy_uri.port end connection = EventMachine.connect host, port, self, connection.start_tls if [:ssl] connection end |
Instance Method Details
- (Object) connection_completed
124 125 126 |
# File 'lib/twitter/json_stream.rb', line 124 def connection_completed send_request end |
- (Object) each_item(&block)
78 79 80 |
# File 'lib/twitter/json_stream.rb', line 78 def each_item &block @each_item_callback = block end |
- (Object) immediate_reconnect
103 104 105 106 107 |
# File 'lib/twitter/json_stream.rb', line 103 def immediate_reconnect @immediate_reconnect = true @gracefully_closed = false close_connection end |
- (Object) on_close(&block)
94 95 96 |
# File 'lib/twitter/json_stream.rb', line 94 def on_close &block @close_callback = block end |
- (Object) on_error(&block)
82 83 84 |
# File 'lib/twitter/json_stream.rb', line 82 def on_error &block @error_callback = block end |
- (Object) on_max_reconnects(&block)
90 91 92 |
# File 'lib/twitter/json_stream.rb', line 90 def on_max_reconnects &block @max_reconnects_callback = block end |
- (Object) on_reconnect(&block)
86 87 88 |
# File 'lib/twitter/json_stream.rb', line 86 def on_reconnect &block @reconnect_callback = block end |
- (Object) post_init
128 129 130 131 |
# File 'lib/twitter/json_stream.rb', line 128 def post_init reset_state @on_inited_callback.call if @on_inited_callback end |
- (Object) receive_data(data)
Receives raw data from the HTTP connection and pushes it into the HTTP parser which then drives subsequent callbacks.
120 121 122 |
# File 'lib/twitter/json_stream.rb', line 120 def receive_data(data) @parser << data end |
- (Object) stop
98 99 100 101 |
# File 'lib/twitter/json_stream.rb', line 98 def stop @gracefully_closed = true close_connection end |
- (Object) unbind
109 110 111 112 113 114 115 116 |
# File 'lib/twitter/json_stream.rb', line 109 def unbind if @state == :stream && !@buffer.empty? parse_stream_line(@buffer.flush) end schedule_reconnect if @options[:auto_reconnect] && !@gracefully_closed @close_callback.call if @close_callback end |