From ca664a36d32e169578847c8e092c4e8ccb0e7363 Mon Sep 17 00:00:00 2001 From: heyanlong Date: Tue, 11 Dec 2018 16:18:59 +0800 Subject: [PATCH] add refs --- sky-php7ext/skywalking.c | 8 +++---- sky-php7ext/src/report/report_client.cpp | 27 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/sky-php7ext/skywalking.c b/sky-php7ext/skywalking.c index 20cb86f..2247860 100644 --- a/sky-php7ext/skywalking.c +++ b/sky-php7ext/skywalking.c @@ -306,7 +306,7 @@ static void generate_context() { sprintf(makeTraceId, "%d.%d.%ld", application_instance, sys_pid, second); add_assoc_string(&SKYWALKING_G(context), "currentTraceId", makeTraceId); - efree(makeTraceId); +// efree(makeTraceId); add_assoc_long(&SKYWALKING_G(context), "isChild", 0); // parent @@ -599,7 +599,7 @@ static void module_init() { i++; } while (application_instance == -100000 && i <= 3); - efree(ipv4s); +// efree(ipv4s); if (application_instance == -100000) { sky_close = 1; @@ -643,8 +643,8 @@ PHP_MSHUTDOWN_FUNCTION(skywalking) if (sky_close == 1) { return SUCCESS; } - zval_dtor(&SKYWALKING_G(context)); - zval_dtor(&SKYWALKING_G(UpstreamSegment)); +// zval_dtor(&SKYWALKING_G(context)); +// zval_dtor(&SKYWALKING_G(UpstreamSegment)); } return SUCCESS; diff --git a/sky-php7ext/src/report/report_client.cpp b/sky-php7ext/src/report/report_client.cpp index 6386b19..c608e5b 100644 --- a/sky-php7ext/src/report/report_client.cpp +++ b/sky-php7ext/src/report/report_client.cpp @@ -211,6 +211,33 @@ int main(int argc, char **argv) { spanObject->set_componentid(spans[i]["componentId"].get()); spanObject->set_iserror(spans[i]["isError"].get()); + + // refs + auto refs = spans[i]["refs"]; + for (int k = 0; k < refs.size(); k++) { + + std::smatch traceResult; + std::string tmp(refs[k]["parentTraceSegmentId"].get()); + bool valid = std::regex_match(tmp, + traceResult, std::regex("([\\-0-9]+)\\.(\\d+)\\.(\\d+)")); + + UniqueId *uniqueIdTmp = new UniqueId; + long long idp1 = std::stoll(traceResult[1]); + long long idp2 = std::stoll(traceResult[2]); + long long idp3 = std::stoll(traceResult[3]); + uniqueIdTmp->add_idparts(idp1); + uniqueIdTmp->add_idparts(idp2); + uniqueIdTmp->add_idparts(idp3); + + TraceSegmentReference *r = spanObject->add_refs(); + r->set_allocated_parenttracesegmentid(uniqueIdTmp); + r->set_parentspanid(refs[k]["parentSpanId"].get()); + r->set_parentapplicationinstanceid(refs[k]["parentApplicationInstanceId"].get()); + r->set_networkaddress(refs[k]["networkAddress"].get()); + r->set_entryapplicationinstanceid(refs[k]["entryApplicationInstanceId"].get()); + r->set_entryservicename(refs[k]["entryServiceName"].get()); + r->set_parentservicename(refs[k]["parentServiceName"].get()); + } } std::string test; -- GitLab