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));
        }
Exemplo n.º 2
0
        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);
        }