class SalesforceStreamer::Server

Attributes

client[R]
push_topics[W]

Public Class Methods

new(push_topics: []) click to toggle source
# File lib/salesforce_streamer/server.rb, line 6
def initialize(push_topics: [])
  @push_topics = push_topics
end

Public Instance Methods

restart() click to toggle source
# File lib/salesforce_streamer/server.rb, line 17
def restart
  Log.info 'Restarting server'
  reset_client
  EM.next_tick { subscribe }
end
run() click to toggle source
# File lib/salesforce_streamer/server.rb, line 10
def run
  Log.info 'Starting server'
  catch_signals
  reset_client
  EM.run { subscribe }
end

Private Instance Methods

catch_signals() click to toggle source
# File lib/salesforce_streamer/server.rb, line 25
def catch_signals
  %w[INT USR1 USR2 TERM TTIN TSTP].each do |sig|
    trap sig do
      puts "Caught signal #{sig}. Shutting down..."
      exit 0
    end
  end
end
reset_client() click to toggle source
# File lib/salesforce_streamer/server.rb, line 34
def reset_client
  @client = Restforce.new
  client.authenticate!
  Configuration.instance.faye_extensions.each do |extension|
    Log.debug %(adding Faye extension #{extension})
    extension.server = self if extension.respond_to?(:server=)
    client.faye.add_extension extension
  end
end
subscribe() click to toggle source
# File lib/salesforce_streamer/server.rb, line 44
def subscribe
  @push_topics.each do |topic|
    client.subscribe topic.name, replay: Configuration.instance.replay_adapter do |message|
      Log.info "Message #{message.dig('event', 'replayId')} received from topic #{topic.name}"
      topic.handle message
    end
  end
end