205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
# File 'lib/pcp_easy/pmapi.rb', line 205
def self.(value_format, pm_desc, pm_value)
atom = PCPEasy::PMAPI::PmAtomValue.new
error_code = FFIInternal.(value_format, pm_value.pointer, pm_desc.type, atom.pointer, pm_desc.type)
raise PCPEasy::Error.from_pmapi_error_number(error_code) if error_code < 0
case pm_desc.type
when PM_TYPE_32
atom.l
when PM_TYPE_U32
atom.ul
when PM_TYPE_64
atom.ll
when PM_TYPE_U64
atom.ull
when PM_TYPE_FLOAT
atom.f
when PM_TYPE_DOUBLE
atom.d
when PM_TYPE_STRING
str = atom.cp.read_string
LibC.free(atom.cp) if atom.cp
str
when PM_TYPE_AGGREGATE || PM_TYPE_EVENT || PM_TYPE_HIGHRES_EVENT
LibC.free(atom.vbp) if atom.vbp
raise PCPEasy::Error.new "Metric type #{pm_desc.type} not supported"
else
raise ArgumentError.new "Type #{pm_desc.type} not valid"
end
end
|