Class: Protocol::HTTP2::Window

Inherits:
Object
  • Object
show all
Defined in:
lib/protocol/http2/window_update_frame.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(capacity = 0xFFFF) ⇒ Window

Returns a new instance of Window.

Parameters:

  • capacity (Integer) (defaults to: 0xFFFF)

    The initial window size, typically from the settings.



27
28
29
30
31
32
33
34
35
36
# File 'lib/protocol/http2/window_update_frame.rb', line 27

def initialize(capacity = 0xFFFF)
	# This is the main field required:
	@available = capacity
	
	# These two fields are primarily used for efficiently sending window updates:
	@used = 0
	@capacity = capacity
	
	fail unless capacity
end

Instance Attribute Details

#availableObject (readonly)

Returns the value of attribute available.



61
62
63
# File 'lib/protocol/http2/window_update_frame.rb', line 61

def available
  @available
end

#capacityObject

Returns the value of attribute capacity.



48
49
50
# File 'lib/protocol/http2/window_update_frame.rb', line 48

def capacity
  @capacity
end

#usedObject (readonly)

Returns the value of attribute used.



47
48
49
# File 'lib/protocol/http2/window_update_frame.rb', line 47

def used
  @used
end

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/protocol/http2/window_update_frame.rb', line 63

def available?
	@available > 0
end

#consume(amount) ⇒ Object



56
57
58
59
# File 'lib/protocol/http2/window_update_frame.rb', line 56

def consume(amount)
	@available -= amount
	@used += amount
end

#dupObject



38
39
40
# File 'lib/protocol/http2/window_update_frame.rb', line 38

def dup
	return self.class.new(@capacity)
end

#expand(amount) ⇒ Object



67
68
69
70
# File 'lib/protocol/http2/window_update_frame.rb', line 67

def expand(amount)
	@available += amount
	@used -= amount
end

#full?Boolean

The window is completely full?

Returns:

  • (Boolean)


43
44
45
# File 'lib/protocol/http2/window_update_frame.rb', line 43

def full?
	@available.zero?
end

#limited?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/protocol/http2/window_update_frame.rb', line 72

def limited?
	@available < (@capacity / 2)
end

#to_sObject



76
77
78
# File 'lib/protocol/http2/window_update_frame.rb', line 76

def to_s
	"\#<Window used=#{@used} available=#{@available} capacity=#{@capacity}>"
end