// start a long tail call on the 1st grain by calling into the 2nd grain public async Task <int> TailCall_Caller(IConcurrentReentrantGrain another, bool doCW) { logger.LogInformation("TailCall_Caller"); if (doCW) { int i = await another.TailCall_Called(); return(i); } return(await another.TailCall_Called()); }
// start a long tail call on the 1st grain by calling into the 2nd grain public async Task<int> TailCall_Caller(IConcurrentReentrantGrain another, bool doCW) { logger.Info("TailCall_Caller"); if (doCW) { int i = await another.TailCall_Called(); return i; } return await another.TailCall_Called(); }
// calls into the 1st grain while the tail call (TailCall_Caller) is not resolved yet. // if tail call optimization is working, this call should go in (the grain should be considered not executing request). public Task<int> TailCall_Resolver(IConcurrentReentrantGrain another) { logger.Info("TailCall_Resolver"); return another.TailCall_Resolve(); }
// calls into the 1st grain while the tail call (TailCall_Caller) is not resolved yet. // if tail call optimization is working, this call should go in (the grain should be considered not executing request). public Task <int> TailCall_Resolver(IConcurrentReentrantGrain another) { logger.LogInformation("TailCall_Resolver"); return(another.TailCall_Resolve()); }