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_atObject

Returns the value of attribute timeout_at.

Returns:

  • (Object)


19
20
21
# File 'lib/raptor/reactor.rb', line 19

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



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

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

#client_dataHash

Returns the client connection state.

Returns:

  • (Hash)

    the client connection state



26
27
28
# File 'lib/raptor/reactor.rb', line 26

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



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

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