public static IConcurrentWriter <T> CreateWriter <T>(string Path, IConcurrentOutput <T> Producer) { var writer = new ConcurrentWriter <T>(Path); writer.InputFrom(Producer); writer.ObserveCollection(Producer); return(writer); }
/// <summary> /// Subcsribes <paramref name="ObjectThatConsumesItems"/> to <paramref name="ObjectThatProducesItems"/>, so that when <paramref name="ObjectThatProducesItems"/> produces items <paramref name="ObjectThatConsumesItems"/> begins consuming /// </summary> /// <typeparam name="T"></typeparam> /// <param name="ObjectThatConsumesItems"></param> /// <param name="ObjectThatProducesItems"></param> public static void ObserveCollection <T>(this IConcurrentInvokable <T> ObjectThatConsumesItems, IConcurrentOutput <T> ObjectThatProducesItems) { ObjectThatProducesItems.HookEvents(ObjectThatConsumesItems); }
public static void StopObserving <T>(this IConcurrentInvokable <T> ObjectThatConsumesItems, IConcurrentOutput <T> ObjectThatProducesItems) { ObjectThatProducesItems.UnHookEvents(ObjectThatConsumesItems); }
/// <summary> /// Adds the ResultCollection of the <paramref name="Output"/> object to the Collection of the <paramref name="Input"/> multi-consumer /// </summary> /// <typeparam name="T"></typeparam> /// <param name="Input"></param> /// <param name="Output"></param> public static void InputFrom <T, U>(this IConcurrentMultiConsumer <T, U> Input, IConcurrentOutput <T> Output) { Input.Collections.Add(Output.ResultCollection); }
/// <summary> /// Hooks the Collection of <paramref name="Input"/> to the ResultCollection of <paramref name="Output"/> /// </summary> /// <typeparam name="T"></typeparam> /// <param name="Input"></param> /// <param name="Output"></param> public static void InputFrom <T>(this IConcurrentInput <T> Input, IConcurrentOutput <T> Output) { Input.Collection = Output.ResultCollection; }
/// <summary> /// Hooks the ResultCollection of Output to the Collection of Input /// </summary> /// <typeparam name="TResult"></typeparam> /// <param name="Output"></param> /// <param name="Input"></param> public static void OutputTo <TResult>(this IConcurrentOutput <TResult> Output, IConcurrentInput <TResult> Input) { Output.ResultCollection = Input.Collection; }