Advertisement
Guest User

Untitled

a guest
Apr 27th, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.25 KB | None | 0 0
  1. module Aethyr
  2.   module Core
  3.     module Storage
  4.       module Hydration
  5.  
  6.         @@volatile = []
  7.  
  8.         def self.volatile(*attrs)
  9.           @@volatile += attrs
  10.           @@volatile.uniq!
  11.         end
  12.  
  13.         # removes all volatle data but provides it as a map for restoration in rehydrate
  14.         def dehydrate
  15.           volatile_data = {}
  16.           @@volatile.each do |attr|
  17.             if self.instance_variable_defined?(attr)
  18.               volatile_data[attr] = self.instance_variable_get(attr)
  19.               begin
  20.                 self.remove_instance_variable(attr)
  21.               rescue NameError
  22.               end
  23.             end
  24.           end
  25.           return volatile_data
  26.         end
  27.  
  28.         def rehydrate(volatile_data)
  29.           volatile_data.each do |attr, data|
  30.             self.instance_variable_set(attr, data) if @@volatile.include? attr
  31.           end
  32.         end
  33.       end
  34.     end
  35.   end
  36. end
  37.  
  38.  
  39. #second file =============================
  40.  
  41. require 'aethyr/core/util/hydration'
  42. require 'aethyr/core/util/marshaller'
  43. require 'wisper'
  44.  
  45. class Publisher
  46.   include Aethyr::Core::Storage::Hydration
  47.   include Marshaller[:@observer_peers, :@local_registrations]
  48.   include Wisper::Publisher
  49.  
  50.   volatile :@local_registrations
  51. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement