internal IReliableQubscription Subscribe <T>(IReliableQbservable <T> observable, IReliableQbserver <T> observer, Uri subscriptionUri, object state) { var subscribe = Expression.Parameter(typeof(Func <IReliableQbservable <T>, IReliableQbserver <T>, IReliableQubscription>), Constants.SubscribeUri); var expression = Expression.Invoke(subscribe, observable.Expression, observer.Expression); var normalized = _expressionServices.Normalize(expression); var subscription = new KnownReliableQubscription(normalized, subscriptionUri, this); CreateSubscription(subscription, state); return(subscription); }
internal IReliableQubscription CreateSubscription <TArgs>(IReliableQubscriptionFactory <TArgs> factory, TArgs argument, Uri subscriptionUri, object state) { var expression = Expression.Invoke(factory.Expression, Expression.Constant(argument, typeof(TArgs))); var normalized = _expressionServices.Normalize(expression); #pragma warning disable IDE0079 // Remove unnecessary suppression. #pragma warning disable CA2000 // Dispose objects before losing scope. (IDisposable semantics are used for deletion behavior here.) var qubscription = new KnownReliableQubscription(normalized, subscriptionUri, this); CreateSubscriptionCore(qubscription, state); #pragma warning restore CA2000 #pragma warning restore IDE0079 return(qubscription); }
internal IReliableQubscription CreateSubscription(IReliableQubscriptionFactory factory, Uri subscriptionUri, object state) { var expression = Expression.Invoke(factory.Expression); var normalized = _expressionServices.Normalize(expression); #pragma warning disable IDE0079 // Remove unnecessary suppression. #pragma warning disable CA2000 // Dispose objects before losing scope. (IDisposable semantics are used for deletion behavior here.) var qubscription = new KnownReliableQubscription(normalized, subscriptionUri, this); CreateSubscriptionCore(qubscription, state); #pragma warning restore CA2000 #pragma warning restore IDE0079 var parameterExpression = Expression.Parameter(typeof(IReliableQubscription), subscriptionUri.AbsoluteUri); var parameterQubscription = new KnownReliableQubscription(parameterExpression, subscriptionUri, this); return(parameterQubscription); }