示例#1
0
        public static IObservable <ClientTermination> CreateService <TSource, TResult>(
            IQactiveProvider provider,
            Func <IObservable <TSource>, IObservable <TResult> > service)
        {
            Contract.Requires(provider != null);
            Contract.Requires(service != null);
            Contract.Ensures(Contract.Result <IObservable <ClientTermination> >() != null);

            return(CreateService <TSource, TResult>(provider, request => service(request).AsQbservable()));
        }
示例#2
0
        public static IObservable <ClientTermination> CreateService <TSource, TResult>(
            IQactiveProvider provider,
            Func <IObservable <TSource>, IQbservable <TResult> > service)
        {
            Contract.Requires(provider != null);
            Contract.Requires(service != null);
            Contract.Ensures(Contract.Result <IObservable <ClientTermination> >() != null);

            return(CreateService(provider, QbservableServiceOptions.Default, service));
        }
示例#3
0
        public static IObservable <ClientTermination> CreateService <TSource, TResult>(
            IQactiveProvider provider,
            QbservableServiceOptions options,
            Func <IObservable <TSource>, IQbservable <TResult> > service)
        {
            Contract.Requires(provider != null);
            Contract.Requires(options != null);
            Contract.Requires(service != null);
            Contract.Ensures(Contract.Result <IObservable <ClientTermination> >() != null);

            return(provider.Listen(
                       options,
                       protocol => new ServerQbservableProvider <TResult>(
                           protocol,
                           options,
                           argument => argument == null && typeof(TSource).GetIsValueType()
                                ? service(Observable.Return(default(TSource)))
                                : service(Observable.Return((TSource)argument)))));
        }
示例#4
0
        public static IObservable <ClientTermination> ServeQbservable <TSource>(this IObservable <TSource> source, IQactiveProvider provider)
        {
            Contract.Requires(source != null);
            Contract.Requires(provider != null);
            Contract.Ensures(Contract.Result <IObservable <ClientTermination> >() != null);

            return(QbservableServer.CreateService <object, TSource>(provider, _ => source));
        }