Class: Ibex::Runtime::ResourceLimits
- Inherits:
-
Object
- Object
- Ibex::Runtime::ResourceLimits
- Defined in:
- lib/ibex/runtime/resource_limits.rb,
sig/ibex/runtime/resource_limits.rbs
Overview
Immutable per-parser-session resource budgets.
Constant Summary collapse
- DEFAULT_MAX_STACK_DEPTH =
10_000- DEFAULT_MAX_RECOVERY_ATTEMPTS =
100- DEFAULT_MAX_INCREMENTAL_DECOMPOSED_NODES =
100_000- DEFAULT_MAX_SESSION_MEMO_BYTES =
64 * 1024 * 1024
Instance Attribute Summary collapse
- #max_incremental_decomposed_nodes ⇒ Integer readonly
- #max_recovery_attempts ⇒ Integer readonly
- #max_session_memo_bytes ⇒ Integer readonly
- #max_stack_depth ⇒ Integer readonly
Instance Method Summary collapse
-
#initialize(max_stack_depth: DEFAULT_MAX_STACK_DEPTH, max_recovery_attempts: DEFAULT_MAX_RECOVERY_ATTEMPTS, max_incremental_decomposed_nodes: DEFAULT_MAX_INCREMENTAL_DECOMPOSED_NODES, max_session_memo_bytes: DEFAULT_MAX_SESSION_MEMO_BYTES) ⇒ ResourceLimits
constructor
A new instance of ResourceLimits.
- #to_h ⇒ Hash[Symbol, Integer]
- #validate_nonnegative_integer(value, name) ⇒ void
- #validate_positive_integer(value, name) ⇒ void
Constructor Details
#initialize(max_stack_depth: DEFAULT_MAX_STACK_DEPTH, max_recovery_attempts: DEFAULT_MAX_RECOVERY_ATTEMPTS, max_incremental_decomposed_nodes: DEFAULT_MAX_INCREMENTAL_DECOMPOSED_NODES, max_session_memo_bytes: DEFAULT_MAX_SESSION_MEMO_BYTES) ⇒ ResourceLimits
Returns a new instance of ResourceLimits.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/ibex/runtime/resource_limits.rb', line 20 def initialize( max_stack_depth: DEFAULT_MAX_STACK_DEPTH, max_recovery_attempts: DEFAULT_MAX_RECOVERY_ATTEMPTS, max_incremental_decomposed_nodes: DEFAULT_MAX_INCREMENTAL_DECOMPOSED_NODES, max_session_memo_bytes: DEFAULT_MAX_SESSION_MEMO_BYTES ) validate_positive_integer(max_stack_depth, :max_stack_depth) validate_nonnegative_integer(max_recovery_attempts, :max_recovery_attempts) validate_nonnegative_integer(max_incremental_decomposed_nodes, :max_incremental_decomposed_nodes) validate_positive_integer(max_session_memo_bytes, :max_session_memo_bytes) @max_stack_depth = max_stack_depth @max_recovery_attempts = max_recovery_attempts @max_incremental_decomposed_nodes = max_incremental_decomposed_nodes @max_session_memo_bytes = max_session_memo_bytes freeze end |
Instance Attribute Details
#max_incremental_decomposed_nodes ⇒ Integer (readonly)
15 16 17 |
# File 'lib/ibex/runtime/resource_limits.rb', line 15 def max_incremental_decomposed_nodes @max_incremental_decomposed_nodes end |
#max_recovery_attempts ⇒ Integer (readonly)
14 15 16 |
# File 'lib/ibex/runtime/resource_limits.rb', line 14 def max_recovery_attempts @max_recovery_attempts end |
#max_session_memo_bytes ⇒ Integer (readonly)
16 17 18 |
# File 'lib/ibex/runtime/resource_limits.rb', line 16 def max_session_memo_bytes @max_session_memo_bytes end |
#max_stack_depth ⇒ Integer (readonly)
13 14 15 |
# File 'lib/ibex/runtime/resource_limits.rb', line 13 def max_stack_depth @max_stack_depth end |
Instance Method Details
#to_h ⇒ Hash[Symbol, Integer]
38 39 40 41 42 43 44 45 |
# File 'lib/ibex/runtime/resource_limits.rb', line 38 def to_h { max_stack_depth: @max_stack_depth, max_recovery_attempts: @max_recovery_attempts, max_incremental_decomposed_nodes: @max_incremental_decomposed_nodes, max_session_memo_bytes: @max_session_memo_bytes }.freeze end |
#validate_nonnegative_integer(value, name) ⇒ void
This method returns an undefined value.
57 58 59 60 61 |
# File 'lib/ibex/runtime/resource_limits.rb', line 57 def validate_nonnegative_integer(value, name) return if value.is_a?(Integer) && value >= 0 raise ArgumentError, "#{name} must be a nonnegative Integer" end |
#validate_positive_integer(value, name) ⇒ void
This method returns an undefined value.
50 51 52 53 54 |
# File 'lib/ibex/runtime/resource_limits.rb', line 50 def validate_positive_integer(value, name) return if value.is_a?(Integer) && value.positive? raise ArgumentError, "#{name} must be a positive Integer" end |