Class: LibWebSocket::Message
- Inherits:
-
Object
- Object
- LibWebSocket::Message
- Includes:
- Stateful
- Defined in:
- lib/libwebsocket/message.rb
Overview
A base class for LibWebSocket::Request and LibWebSocket::Response.
Instance Attribute Summary collapse
-
#challenge ⇒ Object
Returns the value of attribute challenge.
-
#checksum ⇒ Object
Calculate Draft 76 checksum.
-
#error ⇒ Object
Returns the value of attribute error.
-
#fields ⇒ Object
Returns the value of attribute fields.
-
#host ⇒ Object
Returns the value of attribute host.
-
#number1 ⇒ Object
Returns the value of attribute number1.
-
#number2 ⇒ Object
Returns the value of attribute number2.
-
#origin ⇒ Object
Returns the value of attribute origin.
-
#subprotocol ⇒ Object
Returns the value of attribute subprotocol.
-
#version ⇒ Object
Returns the value of attribute version.
Attributes included from Stateful
Instance Method Summary collapse
-
#field(f, val = nil) ⇒ Object
Alias for fields.
-
#initialize(hash = {}) ⇒ Message
constructor
A new instance of Message.
-
#parse(string) ⇒ Object
Parse string.
Methods included from Stateful
Constructor Details
#initialize(hash = {}) ⇒ Message
A new instance of Message. Instance variables will be set from hash.
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/libwebsocket/message.rb', line 15 def initialize(hash = {}) hash.each do |k,v| instance_variable_set("@#{k}",v) end @version ||= 76 @buffer = '' @fields ||= {} @max_message_size ||= 2048 @cookies ||= [] @state = 'first_line' end |
Instance Attribute Details
#challenge ⇒ Object
Returns the value of attribute challenge.
8 9 10 |
# File 'lib/libwebsocket/message.rb', line 8 def challenge @challenge end |
#checksum ⇒ Object
Calculate Draft 76 checksum
47 48 49 |
# File 'lib/libwebsocket/message.rb', line 47 def checksum @checksum end |
#error ⇒ Object
Returns the value of attribute error.
8 9 10 |
# File 'lib/libwebsocket/message.rb', line 8 def error @error end |
#fields ⇒ Object
Returns the value of attribute fields.
8 9 10 |
# File 'lib/libwebsocket/message.rb', line 8 def fields @fields end |
#host ⇒ Object
Returns the value of attribute host.
8 9 10 |
# File 'lib/libwebsocket/message.rb', line 8 def host @host end |
#number1 ⇒ Object
Returns the value of attribute number1.
8 9 10 |
# File 'lib/libwebsocket/message.rb', line 8 def number1 @number1 end |
#number2 ⇒ Object
Returns the value of attribute number2.
8 9 10 |
# File 'lib/libwebsocket/message.rb', line 8 def number2 @number2 end |
#origin ⇒ Object
Returns the value of attribute origin.
8 9 10 |
# File 'lib/libwebsocket/message.rb', line 8 def origin @origin end |
#subprotocol ⇒ Object
Returns the value of attribute subprotocol.
8 9 10 |
# File 'lib/libwebsocket/message.rb', line 8 def subprotocol @subprotocol end |
#version ⇒ Object
Returns the value of attribute version.
8 9 10 |
# File 'lib/libwebsocket/message.rb', line 8 def version @version end |
Instance Method Details
#field(f, val = nil) ⇒ Object
Alias for fields. Use this instead of fields directly to preserve normalization(lowercase etc.)
30 31 32 33 34 35 36 37 38 |
# File 'lib/libwebsocket/message.rb', line 30 def field(f, val = nil) name = f.downcase return self.fields[name] unless val self.fields[name] = val return self end |
#parse(string) ⇒ Object
Parse string
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/libwebsocket/message.rb', line 66 def parse(string) return unless string.is_a?(String) return if self.error return unless self.append(string) while(!self.state?('body') && line = self.get_line) if self.state?('first_line') return unless self.parse_first_line(line) self.state = 'fields' elsif line != '' return unless self.parse_field(line) else self.state = 'body' break end end return true unless self.state?('body') rv = self.parse_body return unless rv # Need more data return rv unless rv != true return self.done end |