/// <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; }
/// <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); }