2121 * namespace OpenCensus\Trace;
2222 *
2323 * class Span {
24+ * const SPAN_KIND_UNKNOWN = 0;
25+ * const SPAN_KIND_CLIENT = 1;
26+ * const SPAN_KIND_SERVER = 2;
27+ * const SPAN_KIND_PRODUCER = 3;
28+ * const SPAN_KIND_CONSUMER = 4;
29+ *
2430 * protected $name = "unknown";
2531 * protected $spanId;
2632 * protected $parentSpanId;
2733 * protected $startTime;
2834 * protected $endTime;
2935 * protected $labels;
36+ * protected $kind;
3037 *
3138 * public function __construct(array $spanOptions)
3239 * {
4552 * return $this->spanId;
4653 * }
4754 *
48- * public function spanId ()
55+ * public function parentSpanId ()
4956 * {
5057 * return $this->parentSpanId;
5158 * }
6471 * {
6572 * return $this->labels;
6673 * }
74+ *
75+ * public function kind()
76+ * {
77+ * return $this->kind;
78+ * }
6779 * }
6880 */
6981
@@ -197,6 +209,23 @@ static PHP_METHOD(OpenCensusTraceSpan, endTime) {
197209 RETURN_ZVAL (val , 1 , 0 );
198210}
199211
212+ /**
213+ * Fetch the span kind
214+ *
215+ * @return int
216+ */
217+ static PHP_METHOD (OpenCensusTraceSpan , kind ) {
218+ zval * val , rv ;
219+
220+ if (zend_parse_parameters_none () == FAILURE ) {
221+ return ;
222+ }
223+
224+ val = zend_read_property (opencensus_trace_span_ce , getThis (), "kind" , sizeof ("kind" ) - 1 , 1 , & rv );
225+
226+ RETURN_ZVAL (val , 1 , 0 );
227+ }
228+
200229/* Declare method entries for the OpenCensus\Trace\Span class */
201230static zend_function_entry opencensus_trace_span_methods [] = {
202231 PHP_ME (OpenCensusTraceSpan , __construct , arginfo_OpenCensusTraceSpan_construct , ZEND_ACC_PUBLIC | ZEND_ACC_CTOR )
@@ -206,9 +235,12 @@ static zend_function_entry opencensus_trace_span_methods[] = {
206235 PHP_ME (OpenCensusTraceSpan , labels , NULL , ZEND_ACC_PUBLIC )
207236 PHP_ME (OpenCensusTraceSpan , startTime , NULL , ZEND_ACC_PUBLIC )
208237 PHP_ME (OpenCensusTraceSpan , endTime , NULL , ZEND_ACC_PUBLIC )
238+ PHP_ME (OpenCensusTraceSpan , kind , NULL , ZEND_ACC_PUBLIC )
209239 PHP_FE_END
210240};
211241
242+ #define REGISTER_TRACE_SPAN_CONSTANT (id ) zend_declare_class_constant_long(opencensus_trace_span_ce, "SPAN_" #id, sizeof("SPAN_" #id) - 1, OPENCENSUS_TRACE_SPAN_##id);
243+
212244/* Module init handler for registering the OpenCensus\Trace\Span class */
213245int opencensus_trace_span_minit (INIT_FUNC_ARGS ) {
214246 zend_class_entry ce ;
@@ -223,8 +255,15 @@ int opencensus_trace_span_minit(INIT_FUNC_ARGS) {
223255 zend_declare_property_null (opencensus_trace_span_ce , "parentSpanId" , sizeof ("parentSpanId" ) - 1 , ZEND_ACC_PROTECTED TSRMLS_CC );
224256 zend_declare_property_null (opencensus_trace_span_ce , "startTime" , sizeof ("startTime" ) - 1 , ZEND_ACC_PROTECTED TSRMLS_CC );
225257 zend_declare_property_null (opencensus_trace_span_ce , "endTime" , sizeof ("endTime" ) - 1 , ZEND_ACC_PROTECTED TSRMLS_CC );
258+ zend_declare_property_null (opencensus_trace_span_ce , "kind" , sizeof ("kind" ) - 1 , ZEND_ACC_PROTECTED TSRMLS_CC );
226259 zend_declare_property_null (opencensus_trace_span_ce , "labels" , sizeof ("labels" ) - 1 , ZEND_ACC_PROTECTED TSRMLS_CC );
227260
261+ REGISTER_TRACE_SPAN_CONSTANT (KIND_UNKNOWN );
262+ REGISTER_TRACE_SPAN_CONSTANT (KIND_CLIENT );
263+ REGISTER_TRACE_SPAN_CONSTANT (KIND_SERVER );
264+ REGISTER_TRACE_SPAN_CONSTANT (KIND_PRODUCER );
265+ REGISTER_TRACE_SPAN_CONSTANT (KIND_CONSUMER );
266+
228267 return SUCCESS ;
229268}
230269
@@ -296,6 +335,8 @@ int opencensus_trace_span_apply_span_options(opencensus_trace_span_t *span, zval
296335 span -> start = Z_DVAL_P (v );
297336 } else if (strcmp (ZSTR_VAL (k ), "name" ) == 0 ) {
298337 span -> name = zend_string_copy (Z_STR_P (v ));
338+ } else if (strcmp (ZSTR_VAL (k ), "kind" ) == 0 ) {
339+ span -> kind = Z_LVAL_P (v );
299340 }
300341 } ZEND_HASH_FOREACH_END ();
301342 return SUCCESS ;
0 commit comments