static VALUE instrumenter_new(VALUE klass, VALUE rb_env) { sky_instrumenter_t* instrumenter; sky_buf_t env[256]; int i, envc; UNUSED(klass); CHECK_TYPE(rb_env, T_ARRAY); if (RARRAY_LEN(rb_env) >= 256) { rb_raise(rb_eArgError, "environment array too long"); return Qnil; } envc = (int) RARRAY_LEN(rb_env); for (i = 0; i < envc; ++i) { VALUE val = rb_ary_entry(rb_env, i); // Make sure it is a string CHECK_TYPE(val, T_STRING); env[i] = STR2BUF(val); } CHECK_FFI( sky_instrumenter_new(env, envc, &instrumenter), "failed to initialize instrumenter"); return Data_Wrap_Struct(rb_cInstrumenter, NULL, sky_instrumenter_free, instrumenter); }
static VALUE trace_new(VALUE klass, VALUE start, VALUE uuid, VALUE endpoint) { sky_trace_t* trace; UNUSED(klass); CHECK_NUMERIC(start); CHECK_TYPE(uuid, T_STRING); CHECK_TYPE(endpoint, T_STRING); CHECK_FFI( sky_trace_new(NUM2ULL(start), STR2BUF(uuid), STR2BUF(endpoint), &trace), "native Trace#new failed"); sky_clear_allocation_count(); return Data_Wrap_Struct(rb_cTrace, NULL, sky_trace_free, trace); }
static VALUE trace_set_endpoint(VALUE self, VALUE endpoint) { sky_trace_t* trace; CHECK_TYPE(endpoint, T_STRING); My_Struct(trace, sky_trace_t, consumed_trace_msg); CHECK_FFI( sky_trace_set_endpoint(trace, STR2BUF(endpoint)), "native Trace#set_endpoint failed"); return Qnil; }
static VALUE trace_span_set_description(VALUE self, VALUE span, VALUE desc) { sky_trace_t* trace; My_Struct(trace, sky_trace_t, consumed_trace_msg); CHECK_TYPE(span, T_FIXNUM); CHECK_TYPE(desc, T_STRING); CHECK_FFI( sky_trace_span_set_desc(trace, FIX2UINT(span), STR2BUF(desc)), "native Trace#span_set_description failed"); return Qnil; }
static VALUE trace_span_set_title(VALUE self, VALUE span, VALUE title) { sky_trace_t* trace; My_Struct(trace, sky_trace_t, consumed_trace_msg); CHECK_TYPE(span, T_FIXNUM); CHECK_TYPE(title, T_STRING); CHECK_FFI( sky_trace_span_set_title(trace, FIX2UINT(span), STR2BUF(title)), "native Trace#span_set_title failed"); return Qnil; }
static VALUE trace_start_span(VALUE self, VALUE time, VALUE category) { sky_trace_t* trace; uint32_t span; My_Struct(trace, sky_trace_t, consumed_trace_msg); CHECK_NUMERIC(time); CHECK_TYPE(category, T_STRING); CHECK_FFI( sky_trace_instrument(trace, NUM2ULL(time), STR2BUF(category), &span), "native Trace#start_span failed"); if (sky_have_memprof()) { sky_trace_span_add_uint_annotation(trace, span, 2, sky_consume_allocations()); } return UINT2NUM(span); }
static VALUE str_is_blank(VALUE str) { return trb_string_is_blank(STR2BUF(str)) ? Qtrue : Qfalse; }