All pastes #1567550 Raw Edit

Something

public text v1 · immutable
#1567550 ·published 2009-09-15 21:53 UTC
rendered paste body
GLib.MainLoop loop;

class Test : Object
{
	public bool runitSync()
	{
		message( "before" );
		intAsyncFunction();
		message( "after" );
		return false;
	}
	
	public async bool runitAsync()
	{
		message( "before" );
		var n = yield intAsyncFunction();
		message( "after: got %d", n );
		return false;
	}

	public async int intAsyncFunction()
	{
		message( "intAsync state 1" );
		Timeout.add_seconds( 5, intAsyncFunction.callback );
		yield;
		message( "intAsync state 2" );
		return 42;
	}

}

static int i = 0;

bool counter()
{
	message( "%d", ++i );
	if ( i == 10 )
		loop.quit();
	return true;
}


public int main( string[] argv )
{
	message( "main()" );
    loop = new GLib.MainLoop( GLib.MainContext.default(), false );
    var t = new Test();
    //Idle.add( t.runitAsync.begin );
    Timeout.add_seconds( 1, counter );
    //t.runitAsync();
    Idle.add( t.runitAsync.begin );
    message( "main() ==> loop" );
    loop.run();
    message( "main() <== loop" );

    return 0;
}