(ctx context.Context, data []byte)
| 33 | } |
| 34 | |
| 35 | func NewProcessor(ctx context.Context, data []byte) (*Processor, error) { |
| 36 | p := C.new_processor() |
| 37 | log.D(ctx, "[perfetto] Parsing %d bytes", len(data)) |
| 38 | if !C.parse_data(p, unsafe.Pointer(&data[0]), C.size_t(len(data))) { |
| 39 | log.W(ctx, "[perfetto] Parsing failed") |
| 40 | C.delete_processor(p) |
| 41 | return nil, log.Errf(ctx, nil, "parsing trace failed") |
| 42 | } |
| 43 | return &Processor{handle: p}, nil |
| 44 | } |
| 45 | |
| 46 | func (p *Processor) Query(q string) (*service.QueryResult, error) { |
| 47 | p.mutex.Lock() |