Class: PermessageDeflate::Session
- Inherits:
-
Object
- Object
- PermessageDeflate::Session
show all
- Defined in:
- lib/permessage_deflate/session.rb
Constant Summary
collapse
- VALID_PARAMS =
[
'server_no_context_takeover',
'client_no_context_takeover',
'server_max_window_bits',
'client_max_window_bits'
]
- MIN_WINDOW_BITS =
9
- MAX_WINDOW_BITS =
15
- VALID_WINDOW_BITS =
[8, 9, 10, 11, 12, 13, 14, 15]
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(options) ⇒ Session
Returns a new instance of Session.
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/permessage_deflate/session.rb', line 34
def initialize(options)
@level = options.fetch(:level, Zlib::DEFAULT_COMPRESSION)
@mem_level = options.fetch(:mem_level, Zlib::DEF_MEM_LEVEL)
@strategy = options.fetch(:strategy, Zlib::DEFAULT_STRATEGY)
@accept_no_context_takeover = options.fetch(:no_context_takeover, false)
@accept_max_window_bits = options.fetch(:max_window_bits, nil)
@request_no_context_takeover = options.fetch(:request_no_context_takeover, false)
@request_max_window_bits = options.fetch(:request_max_window_bits, nil)
@deflate = @inflate = nil
end
|
Class Method Details
.valid_params?(params) ⇒ Boolean
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/permessage_deflate/session.rb', line 15
def self.valid_params?(params)
return false unless params.keys.all? { |k| VALID_PARAMS.include?(k) }
return false if params.values.grep(Array).any?
if params.has_key?('server_no_context_takeover')
return false unless params['server_no_context_takeover'] == true
end
if params.has_key?('client_no_context_takeover')
return false unless params['client_no_context_takeover'] == true
end
if params.has_key?('server_max_window_bits')
return false unless VALID_WINDOW_BITS.include?(params['server_max_window_bits'])
end
true
end
|
Instance Method Details
#close ⇒ Object
69
70
71
72
73
74
75
|
# File 'lib/permessage_deflate/session.rb', line 69
def close
free(@inflate)
@inflate = nil
free(@deflate)
@deflate = nil
end
|
#process_incoming_message(message) ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/permessage_deflate/session.rb', line 47
def process_incoming_message(message)
return message unless message.rsv1
inflate = get_inflate
message.data = inflate.inflate(message.data) +
inflate.inflate([0x00, 0x00, 0xff, 0xff].pack('C*'))
free(inflate) unless @inflate
message
end
|
#process_outgoing_message(message) ⇒ Object
59
60
61
62
63
64
65
66
67
|
# File 'lib/permessage_deflate/session.rb', line 59
def process_outgoing_message(message)
deflate = get_deflate
message.data = deflate.deflate(message.data, Zlib::SYNC_FLUSH)[0...-4]
message.rsv1 = true
free(deflate) unless @deflate
message
end
|