Class: Twilic::Core::Session::SessionState

Inherits:
Data
  • Object
show all
Defined in:
lib/twilic/core/session.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#base_snapshotsObject (readonly)

Returns the value of attribute base_snapshots

Returns:

  • (Object)

    the current value of base_snapshots



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def base_snapshots
  @base_snapshots
end

#dictionariesObject (readonly)

Returns the value of attribute dictionaries

Returns:

  • (Object)

    the current value of dictionaries



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def dictionaries
  @dictionaries
end

#dictionary_profilesObject (readonly)

Returns the value of attribute dictionary_profiles

Returns:

  • (Object)

    the current value of dictionary_profiles



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def dictionary_profiles
  @dictionary_profiles
end

#encode_shape_observationsObject (readonly)

Returns the value of attribute encode_shape_observations

Returns:

  • (Object)

    the current value of encode_shape_observations



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def encode_shape_observations
  @encode_shape_observations
end

#field_enumsObject (readonly)

Returns the value of attribute field_enums

Returns:

  • (Object)

    the current value of field_enums



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def field_enums
  @field_enums
end

#key_tableObject (readonly)

Returns the value of attribute key_table

Returns:

  • (Object)

    the current value of key_table



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def key_table
  @key_table
end

#last_schema_idObject (readonly)

Returns the value of attribute last_schema_id

Returns:

  • (Object)

    the current value of last_schema_id



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def last_schema_id
  @last_schema_id
end

#next_base_idObject (readonly)

Returns the value of attribute next_base_id

Returns:

  • (Object)

    the current value of next_base_id



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def next_base_id
  @next_base_id
end

#next_dictionary_idObject (readonly)

Returns the value of attribute next_dictionary_id

Returns:

  • (Object)

    the current value of next_dictionary_id



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def next_dictionary_id
  @next_dictionary_id
end

#next_template_idObject (readonly)

Returns the value of attribute next_template_id

Returns:

  • (Object)

    the current value of next_template_id



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def next_template_id
  @next_template_id
end

#optionsObject (readonly)

Returns the value of attribute options

Returns:

  • (Object)

    the current value of options



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def options
  @options
end

#previous_messageObject (readonly)

Returns the value of attribute previous_message

Returns:

  • (Object)

    the current value of previous_message



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def previous_message
  @previous_message
end

#previous_message_sizeObject (readonly)

Returns the value of attribute previous_message_size

Returns:

  • (Object)

    the current value of previous_message_size



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def previous_message_size
  @previous_message_size
end

#schemasObject (readonly)

Returns the value of attribute schemas

Returns:

  • (Object)

    the current value of schemas



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def schemas
  @schemas
end

#shape_tableObject (readonly)

Returns the value of attribute shape_table

Returns:

  • (Object)

    the current value of shape_table



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def shape_table
  @shape_table
end

#string_tableObject (readonly)

Returns the value of attribute string_table

Returns:

  • (Object)

    the current value of string_table



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def string_table
  @string_table
end

#template_columnsObject (readonly)

Returns the value of attribute template_columns

Returns:

  • (Object)

    the current value of template_columns



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def template_columns
  @template_columns
end

#templatesObject (readonly)

Returns the value of attribute templates

Returns:

  • (Object)

    the current value of templates



136
137
138
# File 'lib/twilic/core/session.rb', line 136

def templates
  @templates
end

Class Method Details

.new_stateObject



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/twilic/core/session.rb', line 142

def self.new_state
  new(
    options: SessionOptions.default,
    key_table: InternTable.new_table,
    string_table: InternTable.new_table,
    shape_table: ShapeTable.new_table,
    encode_shape_observations: {},
    base_snapshots: [],
    templates: {},
    template_columns: {},
    field_enums: {},
    dictionaries: {},
    dictionary_profiles: {},
    schemas: {},
    last_schema_id: nil,
    previous_message: nil,
    previous_message_size: nil,
    next_base_id: 0,
    next_template_id: 0,
    next_dictionary_id: 0
  )
end

.with_options(options) ⇒ Object



165
166
167
# File 'lib/twilic/core/session.rb', line 165

def self.with_options(options)
  new_state.with(options: options)
end

Instance Method Details

#allocate_base_idObject



178
179
180
181
# File 'lib/twilic/core/session.rb', line 178

def allocate_base_id
  id = next_base_id
  with(next_base_id: next_base_id + 1).next_base_id == id ? id : id
end

#allocate_dictionary_idObject



189
190
191
192
193
# File 'lib/twilic/core/session.rb', line 189

def allocate_dictionary_id
  id = next_dictionary_id
  with(next_dictionary_id: next_dictionary_id + 1)
  id
end

#allocate_template_idObject



183
184
185
186
187
# File 'lib/twilic/core/session.rb', line 183

def allocate_template_id
  id = next_template_id
  with(next_template_id: next_template_id + 1)
  id
end

#get_base_snapshot(base_id) ⇒ Object



195
196
197
198
199
200
# File 'lib/twilic/core/session.rb', line 195

def get_base_snapshot(base_id)
  entry = base_snapshots.find { |e| e.id == base_id }
  return [nil, false] unless entry

  [entry.message.clone_message, true]
end

#register_base_snapshot(base_id, message) ⇒ Object



169
170
171
172
173
174
175
176
# File 'lib/twilic/core/session.rb', line 169

def register_base_snapshot(base_id, message)
  filtered = base_snapshots.reject { |e| e.id == base_id }
  filtered << BaseSnapshotEntry.new(id: base_id, message: message.clone_message)
  while filtered.length > options.max_base_snapshots
    filtered.shift
  end
  with(base_snapshots: filtered)
end

#reset_stateObject



212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
# File 'lib/twilic/core/session.rb', line 212

def reset_state
  reset_tables.with(
    base_snapshots: [],
    templates: {},
    template_columns: {},
    dictionaries: {},
    dictionary_profiles: {},
    schemas: {},
    last_schema_id: nil,
    previous_message: nil,
    previous_message_size: nil,
    next_base_id: 0,
    next_template_id: 0,
    next_dictionary_id: 0
  )
end

#reset_tablesObject



202
203
204
205
206
207
208
209
210
# File 'lib/twilic/core/session.rb', line 202

def reset_tables
  with(
    key_table: InternTable.new_table,
    string_table: InternTable.new_table,
    shape_table: ShapeTable.new_table,
    encode_shape_observations: {},
    field_enums: {}
  )
end