internal CellObserver(Generic.ICell <T> source, IObserver <T> target) { _source = source; _target = target; source.Change += OnChange; }
internal SessionObserver(Generic.ICell <T> source, IObserver <KeyValuePair <ISession, KeyValuePair <string, T> > > target) { _source = source; _target = target; source.Change += OnChange; }
public TraceSubscriber(Generic.ICell <T> source, FSharpFunc <T, string> formater, string prefix = "") { listener = source.Subscribe(this); printline = "Observed " + prefix + source.Mnemonic + " : {0}"; _formater = formater; var v = source.Value; }
internal TraceObserver(Generic.ICell <T> source, IObserver <Tuple <ISession, Generic.ICell <T>, CellEvent, ICell, DateTime> > target) { _source = source; _target = target; source.Change += OnChange; }
internal SessionObserver(Generic.ICell <T> source, IObserver <KeyValuePair <ISession, KeyValuePair <string, T> > > target) { _source = source; _target = target; source.Change += OnChange; System.Threading.Tasks.Task.Run(() => _source.Value); }
internal CellObserver(Generic.ICell <T> source, IObserver <T> target) { _source = source; _target = target; source.Change += OnChange; System.Threading.Tasks.Task.Run(() => _source.Value); }
internal TraceObserver(Generic.ICell <T> source, IObserver <Tuple <ISession, Generic.ICell <T>, CellEvent, ICell, DateTime> > target) { _source = source; _target = target; source.Change += OnChange; System.Threading.Tasks.Task.Run(() => _source.Value); }
public ConsoleSessionSubscriber(Generic.ICell <T> source, string prefix = "") { if (typeof(T) != typeof(string) && typeof(T).IsSubclassOf(typeof(IEnumerable))) { collection = true; } listener = source.Subscribe(this); printline = "{0} Observed {1}" + prefix + source.Mnemonic + " : {2}"; var v = source.Value; }
public void OnChange(CellEvent eventType, ICellEvent root, ICellEvent sender, DateTime epoch, ISession session) { switch (eventType) { case CellEvent.Calculate: _target.OnNext(_source.Value); _retry = 0; break; case CellEvent.Delete: _target.OnCompleted(); break; case CellEvent.Error: try { _target.OnNext(_source.Value); } catch (Exception e) { _target.OnError(e); if (root is ICell c && _retry++ < Cell.ErrorRetry) { Thread.Sleep(_retry * Cell.ErrorRetry * 100); c.OnChange(CellEvent.Calculate, this, this, DateTime.Now, session); } } break; case CellEvent.Link: if (_source.Parent != null && _source.Parent is Model) { var source = ((Model)_source.Parent)[_source.Mnemonic] as Generic.ICell <T>; if (source != null) { _source = source; OnChange(CellEvent.Calculate, sender, sender, epoch, session); } } break; default: break; } }
public void OnChange(CellEvent eventType, ICellEvent sender, DateTime epoch, ISession session) { switch (eventType) { case CellEvent.Calculate: _target.OnNext(_source.Value); break; case CellEvent.Delete: _target.OnCompleted(); break; case CellEvent.Error: try { _target.OnNext(_source.Value); } catch (Exception e) { _target.OnError(e); } break; case CellEvent.Link: if (_source.Parent != null && _source.Parent is Model) { var source = ((Model)_source.Parent)[_source.Mnemonic] as Generic.ICell <T>; if (source != null) { _source = source; OnChange(CellEvent.Calculate, sender, epoch, session); } } break; default: break; } }
public ConsoleSubscriber(Generic.ICell <T> source, string prefix = "") { listener = source.Subscribe(this); printline = "Observed " + prefix + " : {0}"; var v = source.Value; }