protected override async Task ClientSendQueryAsync(Expression expression, object argument)
        {
            if (argument != null)
            {
                await SendMessageAsync(QbservableProtocolMessageKind.Argument, argument).ConfigureAwait(false);
            }

            var converter = new SerializableExpressionConverter();

            await SendMessageAsync(QbservableProtocolMessageKind.Subscribe, converter.Convert(expression)).ConfigureAwait(false);
        }
Example #2
0
        /// <summary>
        /// Deserializes the specified xml to an <see cref="Expression"/>.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="xml"></param>
        /// <returns></returns>
        public static Expression <T> DeserializeExpression <T>(string xml)
        {
            if (string.IsNullOrEmpty(xml))
            {
                throw new ArgumentNullException("xml");
            }

            SerializableExpression          expression = Deserialize <SerializableExpression>(xml);
            SerializableExpressionConverter converter  = new SerializableExpressionConverter(expression, new DummyQueryHandler());

            return(converter.Visit(expression) as Expression <T>);
        }
 protected override Expression GetExpressionFromMessage(StreamMessage message)
 => SerializableExpressionConverter.TryConvert(Deserialize <SerializableExpression>(message));