class NetuitiveRubyApi::DataManager

Attributes

data_cache[RW]
event_cache_enabled[RW]
event_cache_interval[RW]
event_cache_size[RW]
netuitived_server[RW]
sample_cache_enabled[RW]
sample_cache_interval[RW]
sample_cache_size[RW]

Public Instance Methods

add_counter_sample(metric_id, val) click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 21
def add_counter_sample(metric_id, val)
  if @sample_cache_enabled
    NetuitiveRubyApi::NetuitiveLogger.log.debug "adding sample to cache: #{metric_id}"
    sample_cache_addition { data_cache.add_counter_sample(metric_id: metric_id, val: val) }
  else
    server_interaction { netuitived_server.addCounterSample(metric_id, val) }
  end
end
add_sample(metric_id, val) click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 12
def add_sample(metric_id, val)
  if @sample_cache_enabled
    NetuitiveRubyApi::NetuitiveLogger.log.debug "adding sample to cache: #{metric_id}"
    sample_cache_addition { data_cache.add_sample(metric_id: metric_id, val: val) }
  else
    server_interaction { netuitived_server.addSample(metric_id, val) }
  end
end
aggregate_counter_metric(metric_id, val) click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 39
def aggregate_counter_metric(metric_id, val)
  if @sample_cache_enabled
    NetuitiveRubyApi::NetuitiveLogger.log.debug "adding sample to cache: #{metric_id}"
    sample_cache_addition { data_cache.add_aggregate_counter_metric(metric_id: metric_id, val: val) }
  else
    server_interaction { netuitived_server.aggregateCounterMetric(metric_id, val) }
  end
end
aggregate_metric(metric_id, val) click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 30
def aggregate_metric(metric_id, val)
  if @sample_cache_enabled
    NetuitiveRubyApi::NetuitiveLogger.log.debug "adding sample to cache: #{metric_id}"
    sample_cache_addition { data_cache.add_aggregate_metric(metric_id: metric_id, val: val) }
  else
    server_interaction { netuitived_server.aggregateMetric(metric_id, val) }
  end
end
event(message, timestamp, title, level, source, type, tags) click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 48
def event(message, timestamp, title, level, source, type, tags)
  if @event_cache_enabled
    NetuitiveRubyApi::NetuitiveLogger.log.debug "adding event to cache: #{message}"
    event_cache_addition do
      data_cache.add_event(message: message,
                           timestamp: timestamp,
                           title: title,
                           level: level,
                           source: source,
                           type: type,
                           tags: tags)
    end
  else
    server_interaction { netuitived_server.event(message, timestamp, title, level, source, type, tags) }
  end
end
event_cache_addition() { |>= event_cache_size| ... } click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 143
def event_cache_addition
  NetuitiveRubyAPI.check_restart
  flush_events if yield >= @event_cache_size
end
exception_event(exception, klass, tags) click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 65
def exception_event(exception, klass, tags)
  NetuitiveRubyApi::ErrorLogger.guard('error during exception_event') do
    hash = { message: exception.message }
    hash[:backtrace] = exception.backtrace.join("\n\t") if (defined? exception.backtrace) && !exception.backtrace.nil?
    if @event_cache_enabled
      NetuitiveRubyApi::NetuitiveLogger.log.debug "adding exception event to cache: #{hash[:message]}"
      event_cache_addition do
        data_cache.add_exception_event(exception: hash,
                                       klass: klass,
                                       tags: tags)
      end
    else
      server_interaction { netuitived_server.exceptionEvent(hash, klass, tags) }
    end
  end
end
flush_events() click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 116
def flush_events
  NetuitiveRubyApi::ErrorLogger.guard('error during flush_events') do
    event_cache = data_cache.clear_event_cache
    num = event_cache[:events].size + event_cache[:exception_events].size
    NetuitiveRubyApi::NetuitiveLogger.log.info "sending #{num} events" if num > 0
    threads = []
    unless event_cache[:events].empty?
      threads << server_interaction do
        NetuitiveRubyApi::NetuitiveLogger.log.debug "sending events: #{event_cache[:events]} "
        netuitived_server.add_events(event_cache[:events])
      end
    end
    unless event_cache[:exception_events].empty?
      threads << server_interaction do
        NetuitiveRubyApi::NetuitiveLogger.log.debug "sending exception_events: #{event_cache[:exception_events]} "
        netuitived_server.add_exception_events(event_cache[:exception_events])
      end
    end
    threads
  end
end
flush_samples() click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 82
def flush_samples
  NetuitiveRubyApi::ErrorLogger.guard('error during flush_samples') do
    sample = data_cache.clear_sample_cache
    num = sample[:samples].size + sample[:counter_samples].size + sample[:aggregate_metrics].size + sample[:aggregate_counter_metrics].size
    NetuitiveRubyApi::NetuitiveLogger.log.info "sending #{num} samples" if num > 0
    threads = []
    unless sample[:samples].empty?
      threads << server_interaction do
        NetuitiveRubyApi::NetuitiveLogger.log.debug "sending samples: #{sample[:samples]} "
        netuitived_server.add_samples sample[:samples]
      end
    end
    unless sample[:counter_samples].empty?
      threads << server_interaction do
        NetuitiveRubyApi::NetuitiveLogger.log.debug "sending counter_samples: #{sample[:counter_samples]} "
        netuitived_server.add_counter_samples sample[:counter_samples]
      end
    end
    unless sample[:aggregate_metrics].empty?
      threads << server_interaction do
        NetuitiveRubyApi::NetuitiveLogger.log.debug "sending aggregate_metrics: #{sample[:aggregate_metrics]} "
        netuitived_server.add_aggregate_metrics sample[:aggregate_metrics]
      end
    end
    unless sample[:aggregate_counter_metrics].empty?
      threads << server_interaction do
        NetuitiveRubyApi::NetuitiveLogger.log.debug "sending aggregate_counter_metrics: #{sample[:aggregate_counter_metrics]} "
        netuitived_server.add_aggregate_counter_metrics sample[:aggregate_counter_metrics]
      end
    end
    threads
  end
end
sample_cache_addition() { |>= sample_cache_size| ... } click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 138
def sample_cache_addition
  NetuitiveRubyAPI.check_restart
  flush_samples if yield >= @sample_cache_size
end
server_interaction() { || ... } click to toggle source
# File lib/netuitive_ruby_api/data_manager.rb, line 148
def server_interaction
  Thread.new do
    NetuitiveRubyApi::ErrorLogger.guard('error during server interaction') { yield }
  end
end