Exemple #1
0
 static IObservable <TResult> Process <TSource, TResult>(
     IObservable <TSource> source,
     ObjectOperations op,
     object processorClass)
 {
     return(Observable.Defer(() =>
     {
         var processor = new PythonProcessor <TSource, PythonGenerator>(op, processorClass);
         var result = source.SelectMany(input => processor.Process(input).Cast <TResult>());
         if (processor.Load != null)
         {
             processor.Load();
         }
         if (processor.Unload != null)
         {
             return result.Finally(processor.Unload);
         }
         else
         {
             return result;
         }
     }));
 }
Exemple #2
0
        static IObservable <TResult> Process <TSource, TResult>(
            IObservable <TSource> source,
            ScriptScope scope)
        {
            var processor = new PythonProcessor <TSource, PythonGenerator>(scope);
            var result    = source.SelectMany(input => processor.Process(input).Cast <TResult>());

            if (processor.Unload != null)
            {
                result = result.Finally(processor.Unload);
            }

            if (processor.Load != null)
            {
                var observable = result;
                result = Observable.Defer(() =>
                {
                    processor.Load();
                    return(observable);
                });
            }

            return(result);
        }