private Task <OvrStreamResponse> InvokeMethodAsync(string method, object[] arguments, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); if (!m_ObjectMethods[SchedulerName].ContainsKey(method)) { throw new InvalidOperationException($"Unknown method on scheduler object: {method}"); } var message = new InvokeMethodMessage { Object = SchedulerName, Method = m_ObjectMethods[SchedulerName][method], Arguments = arguments, }; return(SendMessageAsync(message, cancellationToken)); }
private void InvokeRpcMethod(IInvocation invocation) { var rpcMethod = _serviceType.GetMethod(invocation.Method.Name, invocation.Method.GetParameters().Select(p => p.ParameterType).ToArray()); if (rpcMethod == null) { throw new InvalidOperationException(string.Format("Cannot invoke method [{0}].", invocation.Method.Name)); } var methodLocator = _fixture.Extractor.Extract(rpcMethod); var message = new InvokeMethodMessage() { MethodLocator = methodLocator, MethodArguments = invocation.Arguments, }; message.Serialize(_fixture.ArgumentEncoder); var service = _serviceResolver.Resolve(_serviceType, _strategy); _handler.Send(service.Type, service.Name, message); }