public static TcpQactiveProvider Server(IPEndPoint endPoint, ITcpQactiveProviderTransportInitializer transportInitializer = null)
        {
            Contract.Requires(endPoint != null);
            Contract.Ensures(Contract.Result <TcpQactiveProvider>() != null);

            return(new TcpQactiveProvider(endPoint, transportInitializer));
        }
Beispiel #2
0
        public static IObservable <ClientTermination> ServeTcp <TSource>(
            this IQbservable <TSource> source,
            IPEndPoint endPoint,
            ITcpQactiveProviderTransportInitializer transportInitializer)
        {
            Contract.Requires(source != null);
            Contract.Requires(endPoint != null);
            Contract.Requires(transportInitializer != null);
            Contract.Ensures(Contract.Result <IObservable <ClientTermination> >() != null);

            return(TcpQbservableServer.CreateService <object, TSource>(endPoint, transportInitializer, _ => source));
        }
Beispiel #3
0
        public static IObservable <ClientTermination> CreateService <TSource, TResult>(
            IPEndPoint endPoint,
            ITcpQactiveProviderTransportInitializer transportInitializer,
            Func <IObservable <TSource>, IObservable <TResult> > service)
        {
            Contract.Requires(endPoint != null);
            Contract.Requires(transportInitializer != null);
            Contract.Requires(service != null);
            Contract.Ensures(Contract.Result <IObservable <ClientTermination> >() != null);

            return(QbservableServer.CreateService(TcpQactiveProvider.Server(endPoint, transportInitializer), service));
        }
        private TcpQactiveProvider(IPEndPoint endPoint, ITcpQactiveProviderTransportInitializer transportInitializer)
        {
            Contract.Requires(endPoint != null);

            EndPoint = endPoint;
            this.transportInitializer = transportInitializer;
            serverNumber = Interlocked.Increment(ref lastServerNumber);

            if (transportInitializer != null)
            {
                prepareSocket    = transportInitializer.Prepare;
                formatterFactory = () => transportInitializer.CreateFormatter() ?? TcpQactiveDefaults.CreateDefaultFormatter();
            }
            else
            {
                prepareSocket    = Nop.Action;
                formatterFactory = TcpQactiveDefaults.CreateDefaultFormatter;
            }
        }