Ejemplo n.º 1
0
task queue::pop( )
{
	Q_AUTO_UNIQUE_LOCK( pimpl_->mutex_, Q_HERE, "queue::pop" );

	if ( pimpl_->queue_.empty( ) )
	{
		/* TODO: , "queue::pop: Queue empty" */
		Q_THROW( queue_exception( ) );
	}

	task task = std::move( pimpl_->queue_.front( ) );

	pimpl_->queue_.pop( );

	return std::move( task );
}
Ejemplo n.º 2
0
Archivo: fail.cpp Proyecto: skyostil/q
Q_TEST_MAKE_SCOPE( fail );
/*
	 *   * exception_ptr -> tuple< T... >
	 *   * exception_ptr -> P< tuple< T... > >
	 *   * E             -> tuple< T... >
	 *   * E             -> P< tuple< T... > >
*/

TEST_F( fail, exception_ptr_to_value )
{
	run(
		q::with( queue )
		.then( EXPECT_CALL_WRAPPER(
		[ ]( ) -> int
		{
			Q_THROW( Error( ) );
		} ) )
		.then( EXPECT_NO_CALL( int, int )( 4711 ) )
		.fail( EXPECT_CALL_WRAPPER(
		[ ]( std::exception_ptr e )
		{
			return 17;
		} ) )
		.then( EXPECT_CALL_WRAPPER(
		[ ]( int value )
		{
			EXPECT_EQ( 17, value );
		} ) )
	);
}