Ejemplo n.º 1
0
static void rygel_media_container_search_in_children (RygelMediaContainer* self, RygelSearchExpression* expression, GeeList* children, guint limit, GCancellable* cancellable, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	RygelMediaContainerSearchInChildrenData* _data_;
	_data_ = g_slice_new0 (RygelMediaContainerSearchInChildrenData);
	_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, rygel_media_container_search_in_children);
	g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, rygel_media_container_search_in_children_data_free);
	_data_->self = g_object_ref (self);
	_data_->expression = _rygel_search_expression_ref0 (expression);
	_data_->children = _g_object_ref0 (children);
	_data_->limit = limit;
	_data_->cancellable = _g_object_ref0 (cancellable);
	rygel_media_container_search_in_children_co (_data_);
}
Ejemplo n.º 2
0
static void rygel_media_container_real_search (RygelMediaContainer* self, RygelSearchExpression* expression, guint offset, guint max_count, GCancellable* cancellable, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	RygelMediaContainerSearchData* _data_;
	_data_ = g_slice_new0 (RygelMediaContainerSearchData);
	_data_->_async_result = g_simple_async_result_new (G_OBJECT (self), _callback_, _user_data_, rygel_media_container_real_search);
	g_simple_async_result_set_op_res_gpointer (_data_->_async_result, _data_, rygel_media_container_real_search_data_free);
	_data_->self = g_object_ref (self);
	_data_->expression = _rygel_search_expression_ref0 (expression);
	_data_->offset = offset;
	_data_->max_count = max_count;
	_data_->cancellable = _g_object_ref0 (cancellable);
	rygel_media_container_real_search_co (_data_);
}
Ejemplo n.º 3
0
static gboolean rygel_external_container_real_search_co (RygelExternalContainerSearchData* data) {
	switch (data->_state_) {
		case 0:
		goto _state_0;
		case 2:
		goto _state_2;
		case 3:
		goto _state_3;
		case 4:
		goto _state_4;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	{
		data->results = gee_array_list_new (RYGEL_TYPE_MEDIA_OBJECT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL);
#line 116 "rygel-external-container.vala"
		if (data->expression == NULL) {
#line 116 "rygel-external-container.vala"
			data->_tmp0_ = TRUE;
#line 553 "rygel-external-container.c"
		} else {
#line 116 "rygel-external-container.vala"
			data->_tmp0_ = !RYGEL_IS_RELATIONAL_EXPRESSION (data->expression);
#line 557 "rygel-external-container.c"
		}
#line 116 "rygel-external-container.vala"
		if (data->_tmp0_) {
#line 561 "rygel-external-container.c"
			data->_state_ = 2;
			RYGEL_MEDIA_CONTAINER_CLASS (rygel_external_container_parent_class)->search (RYGEL_MEDIA_CONTAINER (data->self), data->expression, data->offset, data->max_count, data->cancellable, rygel_external_container_search_ready, data);
			return FALSE;
			_state_2:
			data->_tmp1_ = RYGEL_MEDIA_CONTAINER_CLASS (rygel_external_container_parent_class)->search_finish (RYGEL_MEDIA_CONTAINER (data->self), data->_res_, &data->total_matches, &data->_inner_error_);
			if (data->_inner_error_ != NULL) {
				g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
				g_error_free (data->_inner_error_);
				_g_object_unref0 (data->results);
				{
					if (data->_state_ == 0) {
						g_simple_async_result_complete_in_idle (data->_async_result);
					} else {
						g_simple_async_result_complete (data->_async_result);
					}
					g_object_unref (data->_async_result);
					return FALSE;
				}
			}
			data->result = data->_tmp1_;
			_g_object_unref0 (data->results);
			{
				if (data->_state_ == 0) {
					g_simple_async_result_complete_in_idle (data->_async_result);
				} else {
					g_simple_async_result_complete (data->_async_result);
				}
				g_object_unref (data->_async_result);
				return FALSE;
			}
		}
		data->rel_expression = _rygel_search_expression_ref0 ((data->_tmp2_ = data->expression, RYGEL_IS_RELATIONAL_EXPRESSION (data->_tmp2_) ? ((RygelRelationalExpression*) data->_tmp2_) : NULL));
		data->id = g_strdup ((const char*) ((RygelSearchExpression*) data->rel_expression)->operand2);
#line 128 "rygel-external-container.vala"
		if (_vala_strcmp0 ((const char*) ((RygelSearchExpression*) data->rel_expression)->operand1, "@id") != 0) {
#line 128 "rygel-external-container.vala"
			data->_tmp4_ = TRUE;
#line 599 "rygel-external-container.c"
		} else {
#line 129 "rygel-external-container.vala"
			data->_tmp4_ = GPOINTER_TO_INT (((RygelSearchExpression*) data->rel_expression)->op) != GUPNP_SEARCH_CRITERIA_OP_EQ;
#line 603 "rygel-external-container.c"
		}
#line 128 "rygel-external-container.vala"
		if (data->_tmp4_) {
#line 128 "rygel-external-container.vala"
			data->_tmp3_ = TRUE;
#line 609 "rygel-external-container.c"
		} else {
#line 130 "rygel-external-container.vala"
			data->_tmp3_ = !rygel_external_container_is_direct_child (data->self, data->id);
#line 613 "rygel-external-container.c"
		}
#line 128 "rygel-external-container.vala"
		if (data->_tmp3_) {
#line 617 "rygel-external-container.c"
			data->_state_ = 3;
			RYGEL_MEDIA_CONTAINER_CLASS (rygel_external_container_parent_class)->search (RYGEL_MEDIA_CONTAINER (data->self), data->expression, data->offset, data->max_count, data->cancellable, rygel_external_container_search_ready, data);
			return FALSE;
			_state_3:
			data->_tmp5_ = RYGEL_MEDIA_CONTAINER_CLASS (rygel_external_container_parent_class)->search_finish (RYGEL_MEDIA_CONTAINER (data->self), data->_res_, &data->total_matches, &data->_inner_error_);
			if (data->_inner_error_ != NULL) {
				g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
				g_error_free (data->_inner_error_);
				_g_object_unref0 (data->results);
				_rygel_search_expression_unref0 (data->rel_expression);
				_g_free0 (data->id);
				{
					if (data->_state_ == 0) {
						g_simple_async_result_complete_in_idle (data->_async_result);
					} else {
						g_simple_async_result_complete (data->_async_result);
					}
					g_object_unref (data->_async_result);
					return FALSE;
				}
			}
			data->result = data->_tmp5_;
			_g_object_unref0 (data->results);
			_rygel_search_expression_unref0 (data->rel_expression);
			_g_free0 (data->id);
			{
				if (data->_state_ == 0) {
					g_simple_async_result_complete_in_idle (data->_async_result);
				} else {
					g_simple_async_result_complete (data->_async_result);
				}
				g_object_unref (data->_async_result);
				return FALSE;
			}
		}
		data->factory = rygel_external_item_factory_new ();
#line 140 "rygel-external-container.vala"
		if (rygel_external_item_factory_id_valid (data->id)) {
#line 656 "rygel-external-container.c"
			data->_state_ = 4;
			rygel_external_item_factory_create_for_id (data->factory, data->id, data->self, rygel_external_container_search_ready, data);
			return FALSE;
			_state_4:
			data->media_object = rygel_external_item_factory_create_for_id_finish (data->factory, data->_res_, &data->_inner_error_);
			if (data->_inner_error_ != NULL) {
				g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
				g_error_free (data->_inner_error_);
				_g_object_unref0 (data->results);
				_rygel_search_expression_unref0 (data->rel_expression);
				_g_free0 (data->id);
				_rygel_external_item_factory_unref0 (data->factory);
				{
					if (data->_state_ == 0) {
						g_simple_async_result_complete_in_idle (data->_async_result);
					} else {
						g_simple_async_result_complete (data->_async_result);
					}
					g_object_unref (data->_async_result);
					return FALSE;
				}
			}
#line 142 "rygel-external-container.vala"
			gee_abstract_collection_add ((GeeAbstractCollection*) data->results, (RygelMediaObject*) data->media_object);
#line 681 "rygel-external-container.c"
			_g_object_unref0 (data->media_object);
		} else {
			{
				data->_container_it = gee_abstract_collection_iterator ((GeeAbstractCollection*) data->self->priv->containers);
#line 144 "rygel-external-container.vala"
				while (TRUE) {
#line 144 "rygel-external-container.vala"
					if (!gee_iterator_next (data->_container_it)) {
#line 144 "rygel-external-container.vala"
						break;
#line 692 "rygel-external-container.c"
					}
					data->container = (RygelExternalContainer*) gee_iterator_get (data->_container_it);
#line 145 "rygel-external-container.vala"
					if (_vala_strcmp0 (((RygelMediaObject*) data->container)->id, data->id) == 0) {
#line 146 "rygel-external-container.vala"
						gee_abstract_collection_add ((GeeAbstractCollection*) data->results, (RygelMediaObject*) data->container);
#line 699 "rygel-external-container.c"
					}
					_g_object_unref0 (data->container);
				}
				_g_object_unref0 (data->_container_it);
			}
		}
#line 151 "rygel-external-container.vala"
		data->total_matches = (guint) gee_collection_get_size ((GeeCollection*) data->results);
#line 708 "rygel-external-container.c"
		data->result = (GeeList*) data->results;
		_rygel_search_expression_unref0 (data->rel_expression);
		_g_free0 (data->id);
		_rygel_external_item_factory_unref0 (data->factory);
		{
			if (data->_state_ == 0) {
				g_simple_async_result_complete_in_idle (data->_async_result);
			} else {
				g_simple_async_result_complete (data->_async_result);
			}
			g_object_unref (data->_async_result);
			return FALSE;
		}
		_g_object_unref0 (data->results);
		_rygel_search_expression_unref0 (data->rel_expression);
		_g_free0 (data->id);
		_rygel_external_item_factory_unref0 (data->factory);
	}
	{
		if (data->_state_ == 0) {
			g_simple_async_result_complete_in_idle (data->_async_result);
		} else {
			g_simple_async_result_complete (data->_async_result);
		}
		g_object_unref (data->_async_result);
		return FALSE;
	}
}