@@ -320,6 +320,28 @@ static PHP_METHOD(OpenCensusTraceSpan, kind) {
320320 RETURN_ZVAL (val , 1 , 0 );
321321}
322322
323+ /**
324+ * Fetch the sameProcessAsParentSpan attribute of the span.
325+ *
326+ * @return bool
327+ */
328+ static PHP_METHOD (OpenCensusTraceSpan , sameProcessAsParentSpan ) {
329+ zval * val , rv ;
330+
331+ if (zend_parse_parameters_none () == FAILURE ) {
332+ return ;
333+ }
334+
335+ val = zend_read_property (opencensus_trace_span_ce , getThis (), "sameProcessAsParentSpan" , sizeof ("sameProcessAsParentSpan" ) - 1 , 1 , & rv );
336+ switch (Z_TYPE_P (val )) {
337+ case IS_FALSE :
338+ RETURN_FALSE ;
339+ case IS_TRUE :
340+ default :
341+ RETURN_TRUE
342+ }
343+ }
344+
323345/* Declare method entries for the OpenCensus\Trace\Span class */
324346static zend_function_entry opencensus_trace_span_methods [] = {
325347 PHP_ME (OpenCensusTraceSpan , __construct , arginfo_OpenCensusTraceSpan_construct , ZEND_ACC_PUBLIC | ZEND_ACC_CTOR )
@@ -334,6 +356,7 @@ static zend_function_entry opencensus_trace_span_methods[] = {
334356 PHP_ME (OpenCensusTraceSpan , links , NULL , ZEND_ACC_PUBLIC )
335357 PHP_ME (OpenCensusTraceSpan , timeEvents , NULL , ZEND_ACC_PUBLIC )
336358 PHP_ME (OpenCensusTraceSpan , kind , NULL , ZEND_ACC_PUBLIC )
359+ PHP_ME (OpenCensusTraceSpan , sameProcessAsParentSpan , NULL , ZEND_ACC_PUBLIC )
337360 PHP_FE_END
338361};
339362
@@ -356,6 +379,7 @@ int opencensus_trace_span_minit(INIT_FUNC_ARGS) {
356379 zend_declare_property_null (opencensus_trace_span_ce , "links" , sizeof ("links" ) - 1 , ZEND_ACC_PROTECTED TSRMLS_CC );
357380 zend_declare_property_null (opencensus_trace_span_ce , "timeEvents" , sizeof ("timeEvents" ) - 1 , ZEND_ACC_PROTECTED TSRMLS_CC );
358381 zend_declare_property_null (opencensus_trace_span_ce , "kind" , sizeof ("kind" ) - 1 , ZEND_ACC_PROTECTED TSRMLS_CC );
382+ zend_declare_property_null (opencensus_trace_span_ce , "sameProcessAsParentSpan" , sizeof ("sameProcessAsParentSpan" ) - 1 , ZEND_ACC_PROTECTED TSRMLS_CC );
359383
360384 return SUCCESS ;
361385}
@@ -412,6 +436,7 @@ opencensus_trace_span_t *opencensus_trace_span_alloc()
412436 );
413437 span -> start = 0 ;
414438 span -> stop = 0 ;
439+ span -> same_process_as_parent_span = 1 ;
415440 ALLOC_HASHTABLE (span -> attributes );
416441 zend_hash_init (span -> attributes , 4 , NULL , ZVAL_PTR_DTOR , 0 );
417442
@@ -540,6 +565,10 @@ int opencensus_trace_span_apply_span_options(opencensus_trace_span_t *span, zval
540565 zend_string_release (span -> kind );
541566 }
542567 span -> kind = zend_string_copy (Z_STR_P (v ));
568+ } else if (strcmp (ZSTR_VAL (k ), "sameProcessAsParentSpan" ) == 0 ) {
569+ if (Z_TYPE_P (v ) == IS_FALSE ) {
570+ span -> same_process_as_parent_span = 0 ;
571+ }
543572 }
544573 } ZEND_HASH_FOREACH_END ();
545574 return SUCCESS ;
@@ -611,6 +640,7 @@ int opencensus_trace_span_to_zval(opencensus_trace_span_t *trace_span, zval *spa
611640 if (trace_span -> kind ) {
612641 zend_update_property_str (opencensus_trace_span_ce , span , "kind" , sizeof ("kind" ) - 1 , trace_span -> kind );
613642 }
643+ zend_update_property_bool (opencensus_trace_span_ce , span , "sameProcessAsParentSpan" , sizeof ("sameProcessAsParentSpan" ) - 1 , trace_span -> same_process_as_parent_span );
614644
615645 return SUCCESS ;
616646}
0 commit comments