/// <summary> /// Subscribes to a stream with a callback parameterized by worker id, epoch, and records. /// </summary> /// <typeparam name="R">record type</typeparam> /// <param name="stream">input stream</param> /// <param name="action">callback on worker id, epoch id, and records</param> /// <returns>subscription for synchronization</returns> public static Subscription Subscribe <R>(this Dataflow.Stream <R, Epoch> stream, Action <int, int, IEnumerable <R> > action) { return(new Subscription <R>(stream, stream.ForStage.Placement, stream.Context, action)); }
/// <summary> /// Subscribes to a stream with a per-epoch callback applied at each worker. /// </summary> /// <typeparam name="R">record type</typeparam> /// <param name="stream">input stream</param> /// <param name="action">callback on worker id and records</param> /// <returns>subscription for synchronization</returns> public static Subscription Subscribe <R>(this Dataflow.Stream <R, Epoch> stream, Action <int, IEnumerable <R> > action) { return(stream.Subscribe((j, t, l) => action(j, l))); }
/// <summary> /// Subscribes to a stream with no callback. /// </summary> /// <typeparam name="R">record type</typeparam> /// <param name="stream">input stream</param> /// <returns>subscription for synchronization</returns> public static Subscription Subscribe <R>(this Dataflow.Stream <R, Epoch> stream) { return(stream.Subscribe(x => { })); }
/// <summary> /// Subscribes to a stream with a per-epoch callback applied by one worker. /// </summary> /// <typeparam name="R">record type</typeparam> /// <param name="stream">input stream</param> /// <param name="action">callback</param> /// <returns>subscription for synchronization</returns> public static Subscription Subscribe <R>(this Dataflow.Stream <R, Epoch> stream, Action <IEnumerable <R> > action) { return(new Subscription <R>(stream, new SingleVertexPlacement(0, 0), stream.Context, (j, t, l) => action(l))); }
/// <summary> /// Subscribes to a stream with callbacks for record receipt, epoch completion notification, and stream completion notification. /// </summary> /// <typeparam name="R">record type</typeparam> /// <param name="stream">input stream</param> /// <param name="onRecv">receipt callback</param> /// <param name="onNotify">notification callback</param> /// <param name="onComplete">completion callback</param> /// <returns>subscription for synchronization</returns> public static Subscription Subscribe <R>(this Dataflow.Stream <R, Epoch> stream, Action <Message <Pair <R, Epoch> >, int> onRecv, Action <Epoch, int> onNotify, Action <int> onComplete) { return(new Subscription <R>(stream, stream.ForStage.Placement, stream.Context, onRecv, onNotify, onComplete)); }