Class: Sematext::Metrics::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/sematext/metrics.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sender) ⇒ Client

Returns a new instance of Client.



69
70
71
72
73
# File 'lib/sematext/metrics.rb', line 69

def initialize(sender)
  @sender = sender
  @serializer = RawSerializer.new
  @validator = RawValidator.new
end

Class Method Details

.async(token, receiver_url = nil) ⇒ Object



57
58
59
60
# File 'lib/sematext/metrics.rb', line 57

def async(token, receiver_url = nil)
  url, path = parse_url(receiver_url) if receiver_url
  Client.new(AsyncSender.new(token, url, path))
end

.sync(token, receiver_url = nil) ⇒ Object



52
53
54
55
# File 'lib/sematext/metrics.rb', line 52

def sync(token, receiver_url = nil)
  url, path = parse_url(receiver_url) if receiver_url
  Client.new(SyncSender.new(token, url, path))
end

Instance Method Details

#epochObject



96
97
98
# File 'lib/sematext/metrics.rb', line 96

def epoch 
  Time.now.to_i * 1000
end

#send(datapoint) ⇒ Object



75
76
77
78
79
80
# File 'lib/sematext/metrics.rb', line 75

def send datapoint
  return nil if datapoint.nil?

  result = send_batch [datapoint]
  result.first
end

#send_batch(datapoints) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/sematext/metrics.rb', line 82

def send_batch datapoints
  return nil if datapoints.empty?

  datapoints.each do |dp| 
    @validator.validate(dp)
    dp[:timestamp] = epoch unless dp[:timestamp]
  end

  datapoints.each_slice(Settings::MAX_DP_PER_REQUEST).map do |slice|
    serialized = @serializer.serialize_datapoints(slice)
    @sender.send serialized
  end
end