Sha256: 2f5b04e72ed6914cb96d8523d95c24c9ee3963bdc22400166f704cca74e5e80b
Contents?: true
Size: 1.87 KB
Versions: 3
Compression:
Stored size: 1.87 KB
Contents
require 'bigdecimal' class Riak::Client::BeefcakeProtobuffsBackend class TsCellCodec def cells_for(measures) measures.map{ |m| cell_for m } end def scalars_for(cells) cells.map{ |c| scalar_for c } end def cell_for(measure) TsCell.new case measure when String { varchar_value: measure } when Fixnum { sint64_value: measure } when Bignum { sint64_value: check_bignum_range(measure) } when Float { double_value: measure } when BigDecimal { double_value: measure.to_f } when Rational fail Riak::TimeSeriesError::SerializeRationalNumberError when Complex fail Riak::TimeSeriesError::SerializeComplexNumberError when Time seconds = measure.to_f milliseconds = seconds * 1000 truncated_ms = milliseconds.to_i { timestamp_value: truncated_ms } when TrueClass, FalseClass { boolean_value: measure } when nil { } end end def scalar_for(cell) cell.varchar_value || cell.sint64_value || cell.double_value || timestamp(cell) || cell.boolean_value # boolean_value is last, so we can get either false, nil, or true end private def check_bignum_range(bignum) if (bignum > -0x8000000000000000) && (bignum < 0x7FFFFFFFFFFFFFFF) return bignum end fail Riak::TimeSeriesError::SerializeBigIntegerError, bignum end def timestamp(cell) return false unless cell.timestamp_value.is_a? Integer Time.at(cell.timestamp_value.to_f / 1000) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
riak-client-2.3.2 | lib/riak/client/beefcake/ts_cell_codec.rb |
riak-client-2.3.1 | lib/riak/client/beefcake/ts_cell_codec.rb |
riak-client-2.3.0 | lib/riak/client/beefcake/ts_cell_codec.rb |