public static TcpQactiveProvider Server(IPEndPoint endPoint, ITcpQactiveProviderTransportInitializer transportInitializer = null) { Contract.Requires(endPoint != null); Contract.Ensures(Contract.Result <TcpQactiveProvider>() != null); return(new TcpQactiveProvider(endPoint, transportInitializer)); }
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)); }
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; } }