Class: RubySync::Connectors::MemoryConnector

Inherits:
BaseConnector show all
Includes:
MemoryAssociationTracking, MemoryChangeTracking
Defined in:
lib/ruby_sync/connectors/memory_connector.rb

Instance Attribute Summary

Attributes inherited from BaseConnector

#is_vault, #name, #once_only, #pipeline

Instance Method Summary collapse

Methods included from MemoryChangeTracking

#delete_from_mirror, #digest, #each_change, #remove_mirror, #shadow, #update_mirror

Methods included from MemoryAssociationTracking

#associate, #association_key_for, #associations_by_path, #associations_for, #path_for_association, #paths_by_association, #remove_association, #remove_associations

Methods inherited from BaseConnector

#association_context, #association_for, #can_act_as_vault?, #clean, #create_operations_for, #entry_for_own_association_key, event_method, fields, #find_associated, #has_entry_for_key?, #is_delete_echo?, #is_echo?, #is_vault?, #own_association_key_for, #path_for_own_association_key, sample_config, #start, #started, #stop, #stopped, #sync_started, #sync_stopped, target_transform, #test_add, #test_delete, #test_modify, track_associations_with, track_changes_with

Methods included from ConnectorEventProcessing

#associated_path, #clean, #delete_from_mirror, #perform_add, #perform_delete, #perform_modify, #process, #update_mirror

Methods included from Utilities

#as_array, #call_if_exists, #class_called, #class_for_name, #class_name_for, #connector_called, #dump_after, #dump_before, #effective_operations, #ensure_dir_exists, #get_preference, #get_preference_file_path, #include_in_search_path, #log_progress, #perform_operations, #perform_transform, #pipeline_called, #set_preference, #something_called, #with_rescue

Constructor Details

#initialize(options) ⇒ MemoryConnector

Returns a new instance of MemoryConnector.



34
35
36
37
# File 'lib/ruby_sync/connectors/memory_connector.rb', line 34

def initialize options
  super
  @data = {}
end

Instance Method Details

#[](key) ⇒ Object



67
68
69
# File 'lib/ruby_sync/connectors/memory_connector.rb', line 67

def [](key)
  @data[normalize(key)]
end

#[]=(key, value) ⇒ Object



71
72
73
# File 'lib/ruby_sync/connectors/memory_connector.rb', line 71

def []=(key, value)
  @data[normalize(key)] = value
end

#add(id, operations) ⇒ Object

Raises:

  • (Exception)


39
40
41
42
43
44
45
46
# File 'lib/ruby_sync/connectors/memory_connector.rb', line 39

def add id, operations
  id = normalize id
  raise Exception.new("Item already exists") if @data[id]
  log.debug "Adding new record with key '#{id}'"
  @data[id] = perform_operations operations
  association_key = (is_vault?)? nil : [nil, own_association_key_for(id)]
  return id
end

#delete(id) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/ruby_sync/connectors/memory_connector.rb', line 56

def delete id
  id = normalize id
  unless @data[id]
     log.warn "Can't delete non-existent item '#{id}'"
     return
   end
  @data.delete id
end

#each_entryObject



27
28
29
30
31
# File 'lib/ruby_sync/connectors/memory_connector.rb', line 27

def each_entry
  @data.each do |key, entry|
    yield key, entry
  end
end

#modify(id, operations) ⇒ Object

Raises:

  • (Exception)


48
49
50
51
52
53
# File 'lib/ruby_sync/connectors/memory_connector.rb', line 48

def modify id, operations
  id = normalize id
  raise Exception.new("Attempting to modify non-existent record '#{id}'") unless @data[id]
  perform_operations operations, @data[id]
  return id
end