Class: Raptor::Reactor::TimeoutClient

Inherits:
RedBlackTree::Node
  • Object
show all
Defined in:
lib/raptor/reactor.rb,
sig/generated/raptor/reactor.rbs

Overview

A client connection node ordered by absolute expiry time so the soonest-to-expire is always at the tree's minimum.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#timeout_at ⇒ Object

Returns the value of attribute timeout_at.

Returns:

  • (Object)


30
31
32
# File 'lib/raptor/reactor.rb', line 30

def timeout_at
  @timeout_at
end

Instance Method Details

#<=>(other) ⇒ Integer

Orders nodes by timeout_at so the tree minimum is the next client to expire.

Parameters:

Returns:

  • (Integer) —

    -1, 0, or 1



59
60
61
# File 'lib/raptor/reactor.rb', line 59

def <=>(other)
  timeout_at <=> other.timeout_at
end

#client_data ⇒ Hash

Returns the client connection state.

Returns:

  • (Hash) —

    the client connection state



37
38
39
# File 'lib/raptor/reactor.rb', line 37

def client_data
  data
end

#timeout(now) ⇒ Float

Returns seconds until expiry, clamped to 0 so an already-expired client doesn't push the next selector wait into the future.

Parameters:

  • now (Float) —

    current monotonic timestamp

Returns:

  • (Float) —

    seconds until expiry, never negative



48
49
50
# File 'lib/raptor/reactor.rb', line 48

def timeout(now)
  [timeout_at - now, 0].max
end