Exemple #1
0
        /// <summary>
        /// Starts the client environment instance and
        /// etablishes a connection to the Zyan service.
        /// </summary>
        /// <seealso cref="ClientEnvironment.Start"/>
        public override void Start()
        {
            var serverAddress = remoteAddress ?? ZyanConstants.DefaultServerName;
            var name          = Artefacts.ServiceConstants.ZyanServicePrefix + serviceName;
            var url           = String.Format("{0}://{1}:{2}/{3}", ZyanConstants.DefaultServiceProtocol, serverAddress, ZyanConstants.DefaultServicePort, name);

            var connection   = new ZyanConnection(url, ZyanConstants.GetDefaultClientProtocol());
            var queryHandler = new ZyanClientQueryHandler(connection);

            queryHandler.Connect();

            QueryHandler = queryHandler;
        }
Exemple #2
0
        /// <summary>
        /// Handles LINQ queries.
        /// </summary>
        /// <param name="methodCallMessage"><see cref="IMethodCallMessage"/> to process.</param>
        /// <param name="methodInfo"><see cref="MethodInfo"/> for the method being called.</param>
        /// <returns><see cref="ReturnMessage"/>, if the call is processed successfully, otherwise, false.</returns>
        private ReturnMessage HandleLinqQuery(IMethodCallMessage methodCallMessage, MethodInfo methodInfo)
        {
            if (methodInfo.GetParameters().Length == 0 &&
                methodInfo.GetGenericArguments().Length == 1 &&
                (typeof(IEnumerable).IsAssignableFrom(methodInfo.ReturnType) || typeof(IQueryable).IsAssignableFrom(methodInfo.ReturnType)))
            {
                var elementType       = methodInfo.GetGenericArguments().First();
                var serverHandlerName = ZyanMethodQueryHandler.GetMethodQueryHandlerName(_uniqueName, methodInfo);
                var clientHandler     = new ZyanClientQueryHandler(_connection, serverHandlerName);
                var returnValue       = clientHandler.Get(elementType);
                return(new ReturnMessage(returnValue, null, 0, methodCallMessage.LogicalCallContext, methodCallMessage));
            }

            // This method call doesn't represent a LINQ query
            return(null);
        }