static void consumer_consume_loop(HermannInstanceConfig* consumerConfig) { rd_kafka_message_t *msg; TRACER("\n"); while (consumerConfig->run) { #ifdef HAVE_RB_THREAD_BLOCKING_REGION msg = (rd_kafka_message_t *) rb_thread_blocking_region((rb_blocking_function_t *) consumer_recv_msg, consumerConfig, consumer_consume_stop_callback, consumerConfig); #elif HAVE_RB_THREAD_CALL_WITHOUT_GVL msg = rb_thread_call_without_gvl(consumer_recv_msg, consumerConfig, consumer_consume_stop_callback, consumerConfig); #else msg = consumer_recv_msg(consumerConfig); #endif if ( msg ) { msg_consume(msg, consumerConfig); rd_kafka_message_destroy(msg); } } }
static VALUE consumer_consume_loop(VALUE self) { HermannInstanceConfig* consumerConfig; rd_kafka_message_t *msg; Data_Get_Struct(self, HermannInstanceConfig, consumerConfig); TRACER("\n"); while (consumerConfig->run) { #if HAVE_RB_THREAD_BLOCKING_REGION && RUBY_API_VERSION_MAJOR < 2 msg = (rd_kafka_message_t *) rb_thread_blocking_region((rb_blocking_function_t *) consumer_recv_msg, consumerConfig, consumer_consume_stop_callback, consumerConfig); #elif HAVE_RB_THREAD_CALL_WITHOUT_GVL msg = rb_thread_call_without_gvl(consumer_recv_msg, consumerConfig, consumer_consume_stop_callback, consumerConfig); #else msg = consumer_recv_msg(consumerConfig); #endif if ( msg ) { msg_consume(msg, consumerConfig); } } return Qnil; }