Sha256: c3c6bd460bdcc82e66f844330f6238f2ee464b7231834646033b7aba9b6d59fb

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

#include "current_trace.h"
#include "event_store.h"
#include "types/event.h"

static __thread Trace *current_trace = NULL;

Trace *get_current_trace() {
  return current_trace;
}

VALUE rb_create_trace(VALUE _self) {
  if(current_trace != NULL) {
    current_trace->active = false;

    Event event = {};
    event.trace = current_trace;
    event.event = END_OF_OBSOLOTE_TRACE_EVENT;

    produce_event(event); // This will tell sidecar to free the memory
  }

  Span *span = malloc(sizeof(Span));
  span->children_count = 0;
  span->caller = NULL;
  span->receiver = NULL;
  span->klass = NULL;
  span->self_klass = NULL;
  span->return_value = NULL;
  span->arguments = NULL;
  span->arguments_count = 0;
  span->exception = NULL;
  span->children_count = 0;

  current_trace = malloc(sizeof(Trace));
  current_trace->finished = false;
  current_trace->top_span = span;
  current_trace->current_span = span;
  current_trace->active = true;

  return Qtrue;
}

VALUE rb_send_eot(VALUE _self) {
  Event event = {};
  event.trace = current_trace;
  event.event = END_OF_TRACE;

  produce_event(event);

  return Qtrue;
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
stack_trace-0.8.0 ext/stack_trace/current_trace.c
stack_trace-0.7.0 ext/stack_trace/current_trace.c