Module: HotCell

Defined in:
lib/hot_cell/clock.rb,
lib/hot_cell/codes.rb,
lib/hot_cell/errors.rb,
lib/hot_cell/fields.rb,
lib/hot_cell/naming.rb,
lib/hot_cell/failure.rb,
lib/hot_cell/payload.rb,
lib/hot_cell/request.rb,
lib/hot_cell/protocol.rb,
lib/hot_cell/response.rb,
lib/hot_cell/connection.rb,
lib/hot_cell/descriptors.rb,
lib/hot_cell/core/version.rb,
lib/hot_cell/declarations.rb,
lib/hot_cell/test_support.rb

Defined Under Namespace

Modules: Clock, Codes, Declarations, Fields, Naming, Payload, TestSupport Classes: AccessModeError, CellNotConfigured, ConfigurationError, Connection, Descriptor, Error, Failure, Input, MessageError, Output, ReadTimeout, Request, Response, SerializationError, UnregisteredCell

Constant Summary collapse

PROTOCOL_VERSION =

Checked, never negotiated. A cell answers protocol to anything else, which is transient rather than a bug: during a rolling deploy the app moves before the accessory reboots, so every request mismatches until it does.

1
MAX_REQUEST_BYTES =

A request is a control message from the trusted side, and the worker parses it before it has narrowed to the operation's limits. Capping it is what bounds that parse.

8192
MAX_RESPONSE_BYTES =

A response carries metadata rather than bytes, so this is generous rather than tight.

65_536
MAX_DESCRIPTORS =

The kernel caps SCM_RIGHTS at 253 descriptors per message. Nothing here wants more than a handful.

16
MAX_NESTING =

Nesting depth of a whole message line. Deep symbolization walks the structure, so this is what bounds the recursion.

8
DESCRIBE =

The two operations a cell answers on control.sock rather than work.sock. The names live here because both sides need them and neither owns them.

"hotcell.describe"
METRICS =
"hotcell.metrics"
CONTROL_OPERATIONS =
[ DESCRIBE, METRICS ].freeze
VERSION =
"0.1.0"