Ejemplo n.º 1
0
        public bool MoveNext()
        {
            if (process == null)
            {
                return(false);
            }

            try {
                ContextHolder.CurrentContext.Value = context;
                context.ResetTimeout();
                IAnyFutureResult result = process.Poll();
                if (result.IsReady)
                {
                    process = null;
                    onDone(ExtractMessage(result.ValueObject));
                    return(false);
                }
                else
                {
                    current = context.NextYield;
                    return(true);
                }
            } catch (Exception e) {
                context.Logger.Error($"Exception in process poll: {e.Message}");
                context.Logger.LogException(e);

                process = null;
                onDone(ExtractMessage(e));
                return(false);
            } finally {
                ContextHolder.CurrentContext.Value = null;
            }
        }
Ejemplo n.º 2
0
 public CorouttineAdapter(IAnyFuture process, IKSPContext context, Action <string> onDone)
 {
     this.process = process;
     this.context = context;
     this.onDone  = onDone;
 }