コード例 #1
0
        public HttpRequestHandler(
            ICommunicationModelProvider communicationModelProvider,
            IDomainServiceProvider domainServiceProvider,
            IRoutineMethodResolver routineMethodResolver,
            IMethodInvokerFactory methodInvokerFactory,
            ISerializerFactorySelector serializerFactorySelector,
            IEnumerable <IEventDispatcher> eventDispatchers,
            IUniqueIdGenerator idGenerator,
            ITransitionCommitter transitionCommitter,
            IRoutineCompletionNotifier routineCompletionNotifier,
            IEnumerable <IHttpIntentPreprocessor> intentPreprocessors,
            IEnumerable <IRoutineTransitionAction> transitionActions,
            ITransitionUserContext transitionUserContext)
        {
            _communicationModelProvider = communicationModelProvider;
            _domainServiceProvider      = domainServiceProvider;
            _routineMethodResolver      = routineMethodResolver;
            _methodInvokerFactory       = methodInvokerFactory;
            _eventDispatcher            = eventDispatchers.FirstOrDefault();
            _idGenerator               = idGenerator;
            _transitionCommitter       = transitionCommitter;
            _routineCompletionNotifier = routineCompletionNotifier;
            _intentPreprocessor        = new AggregateHttpIntentPreprocessor(intentPreprocessors);
            _transitionActions         = transitionActions;
            _transitionUserContext     = transitionUserContext;

            _dasyncJsonSerializer = serializerFactorySelector.Select("dasync+json").Create();

            JsonSettings.Converters.Add(new EntityProjectionConverter(communicationModelProvider.Model));
        }
コード例 #2
0
        public AzureFunctionsFabric(
            ISerializerFactorySelector serializerFactorySelector,
            INumericIdGenerator idGenerator,
            ITransitionRunner transitionRunner,
            IAzureWebJobsEnviromentalSettings azureWebJobsEnviromentalSettings,
            ICloudStorageAccountFactory cloudStorageAccountFactory,
            AzureFunctionsFabricSettings settings,
            IServiceProxyBuilder serviceProxyBuilder,
            IRoutineMethodResolver routineMethodResolver,
            IMethodInvokerFactory methodInvokerFactory,
            IServiceRegistry serviceRegistry)
        {
            _transitionRunner      = transitionRunner;
            _idGenerator           = idGenerator;
            _settings              = settings;
            _serviceProxyBuilder   = serviceProxyBuilder;
            _routineMethodResolver = routineMethodResolver;
            _methodInvokerFactory  = methodInvokerFactory;
            _serviceRegistry       = serviceRegistry;

#warning Need configurable serializer
            // Hard-code this for now.
            _defaultSerializer = serializerFactorySelector.Select("dasyncjson").Create();

            _storageAccountConnectionString = azureWebJobsEnviromentalSettings.DefaultStorageConnectionString;
            _storageAccount = cloudStorageAccountFactory.Create(_storageAccountConnectionString);

            //#warning make sure that site name is alpha-numeric and does not start with a number
            //            var prefix = azureWebJobsEnviromentalSettings.WebSiteName.ToLowerInvariant();
            var prefix = "";
            _routinesTable = _storageAccount.TableClient.GetTableReference(prefix + "routines");
            _servicesTable = _storageAccount.TableClient.GetTableReference(prefix + "services");
        }
コード例 #3
0
        public DefaultFunctionInvokerFactoryTests()
        {
            Mock <IMethodInfoLocator> invokerMock = new Mock <IMethodInfoLocator>(MockBehavior.Strict);

            invokerMock
            .Setup(p => p.GetMethod(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(() => _functionMethod);

            _methodInvokerFactory = CreateMethodInvokerFactory();
            _activator            = new DefaultFunctionActivator();
            _invokerFactory       = new DefaultFunctionInvokerFactory(_methodInvokerFactory, _activator, invokerMock.Object);
        }
        public void Create_IfMethodIsNull_Throws()
        {
            // Arrange
            MethodInfo            method = null;
            IMethodInvokerFactory methodInvokerFactory = CreateMethodInvokerFactory();
            IFunctionActivator    activator            = CreateDummyActivator();

            IFunctionInvokerFactory _invokerFactory = new DefaultFunctionInvokerFactory(methodInvokerFactory, activator);

            // Act & Assert
            var ex = Assert.Throws <ArgumentNullException>(() => _invokerFactory.Create(method));

            Assert.Equal("method", ex.ParamName);
        }
        public void Create_ReturnsFunctionInvoker()
        {
            // Arrange
            MethodInfo method = GetMethodInfo(nameof(DefaultFunctionInvokerFactoryTests.StaticReturnVoid));

            IMethodInvokerFactory methodInvokerFactory = CreateMethodInvokerFactory();
            IFunctionActivator    activator            = CreateDummyActivator();

            IFunctionInvokerFactory _invokerFactory = new DefaultFunctionInvokerFactory(methodInvokerFactory, activator);

            // Act
            IFunctionInvoker invoker = _invokerFactory.Create(method);

            // Assert
            Assert.IsType <DefaultFunctionInvoker <DefaultFunctionInvokerFactoryTests, object> >(invoker);
        }
        public void Create_IfInstanceAndMethodIsInherited_UsesReflectedType()
        {
            // Arrange
            MethodInfo method = GetMethodInfo(typeof(Subclass), nameof(Subclass.InheritedReturnVoid));

            IMethodInvokerFactory methodInvokerFactory = CreateMethodInvokerFactory();
            IFunctionActivator    activator            = new DefaultFunctionActivator();

            IFunctionInvokerFactory _invokerFactory = new DefaultFunctionInvokerFactory(methodInvokerFactory, activator);

            // Act
            IFunctionInvoker invoker = _invokerFactory.Create(method);

            // Assert
            Assert.IsType <DefaultFunctionInvoker <Subclass, object> >(invoker);
            var typedInvoker = (DefaultFunctionInvoker <Subclass, object>)invoker;

            Assert.IsType <DefaultFunctionActivator>(typedInvoker.FunctionActivator);
        }
        public void Create_IfInstance_UsesActivatorInstanceFactory()
        {
            // Arrange
            MethodInfo method = GetMethodInfo(nameof(DefaultFunctionInvokerFactoryTests.InstanceReturnVoid));

            IMethodInvokerFactory methodInvokerFactory = CreateMethodInvokerFactory();
            IFunctionActivator    activator            = new DefaultFunctionActivator();

            IFunctionInvokerFactory _invokerFactory = new DefaultFunctionInvokerFactory(methodInvokerFactory, activator);

            // Act
            IFunctionInvoker invoker = _invokerFactory.Create(method);

            // Assert
            Assert.IsType <DefaultFunctionInvoker <DefaultFunctionInvokerFactoryTests, object> >(invoker);
            var typedInvoker = (DefaultFunctionInvoker <DefaultFunctionInvokerFactoryTests, object>)invoker;

            Assert.IsType <DefaultFunctionActivator>(typedInvoker.FunctionActivator);
        }
コード例 #8
0
 public TransitionCommitter(
     ICommunicationModelProvider communicationModelProvider,
     IPlatformHttpClientProvider platformHttpClientProvider,
     IRoutineCompletionSink routineCompletionSink,
     IEventDispatcher eventDispatcher,
     IRoutineMethodResolver routineMethodResolver,
     IDomainServiceProvider domainServiceProvider,
     IMethodInvokerFactory methodInvokerFactory,
     IEnumerable <IRoutineTransitionAction> transitionActions,
     ITransitionUserContext transitionUserContext)
 {
     _communicationModelProvider = communicationModelProvider;
     _platformHttpClientProvider = platformHttpClientProvider;
     _routineCompletionSink      = routineCompletionSink;
     _eventDispatcher            = eventDispatcher;
     _routineMethodResolver      = routineMethodResolver;
     _domainServiceProvider      = domainServiceProvider;
     _methodInvokerFactory       = methodInvokerFactory;
     _transitionActions          = transitionActions;
     _transitionUserContext      = transitionUserContext;
 }
コード例 #9
0
 public TransitionRunner(
     ITransitionScope transitionScope,
     ITransitionCommitter transitionCommitter,
     IServiceProxyBuilder serviceProxyBuilder,
     IRoutineMethodResolver routineMethodResolver,
     IAsyncStateMachineMetadataProvider asyncStateMachineMetadataProvider,
     IMethodInvokerFactory methodInvokerFactory,
     IServiceStateValueContainerProvider serviceStateValueContainerProvider,
     IntrinsicRoutines intrinsicRoutines,
     INumericIdGenerator idGenerator)
 {
     _transitionScope                    = transitionScope;
     _transitionCommitter                = transitionCommitter;
     _serviceProxyBuilder                = serviceProxyBuilder;
     _routineMethodResolver              = routineMethodResolver;
     _asyncStateMachineMetadataProvider  = asyncStateMachineMetadataProvider;
     _methodInvokerFactory               = methodInvokerFactory;
     _serviceStateValueContainerProvider = serviceStateValueContainerProvider;
     _intrinsicRoutines                  = intrinsicRoutines;
     _idGenerator = idGenerator;
 }
コード例 #10
0
 public TransitionRunner(
     ITransitionScope transitionScope,
     ITransitionCommitter transitionCommitter,
     IServiceProxyBuilder serviceProxyBuilder,
     IRoutineMethodResolver routineMethodResolver,
     IAsyncStateMachineMetadataProvider asyncStateMachineMetadataProvider,
     IMethodInvokerFactory methodInvokerFactory,
     //IServiceStateValueContainerProvider serviceStateValueContainerProvider,
     IntrinsicRoutines intrinsicRoutines,
     IUniqueIdGenerator idGenerator,
     ITaskCompletionSourceRegistry taskCompletionSourceRegistry)
 {
     _transitionScope                   = transitionScope;
     _transitionCommitter               = transitionCommitter;
     _serviceProxyBuilder               = serviceProxyBuilder;
     _routineMethodResolver             = routineMethodResolver;
     _asyncStateMachineMetadataProvider = asyncStateMachineMetadataProvider;
     _methodInvokerFactory              = methodInvokerFactory;
     //_serviceStateValueContainerProvider = serviceStateValueContainerProvider;
     _intrinsicRoutines            = intrinsicRoutines;
     _idGenerator                  = idGenerator;
     _taskCompletionSourceRegistry = taskCompletionSourceRegistry;
 }
コード例 #11
0
 public ProxyMethodExecutor(
     ITransitionScope transitionScope,
     IMethodIdProvider routineMethodIdProvider,
     IEventIdProvider eventIdProvider,
     IUniqueIdGenerator numericIdGenerator,
     IRoutineCompletionNotifier routineCompletionNotifier,
     IEventSubscriber eventSubscriber,
     ICommunicationSettingsProvider communicationSettingsProvider,
     IMethodInvokerFactory methodInvokerFactory,
     ISingleMethodInvoker singleMethodInvoker,
     ISingleEventPublisher singleEventPublisher)
 {
     _transitionScope               = transitionScope;
     _routineMethodIdProvider       = routineMethodIdProvider;
     _eventIdProvider               = eventIdProvider;
     _idGenerator                   = numericIdGenerator;
     _routineCompletionNotifier     = routineCompletionNotifier;
     _eventSubscriber               = eventSubscriber;
     _communicationSettingsProvider = communicationSettingsProvider;
     _methodInvokerFactory          = methodInvokerFactory;
     _singleMethodInvoker           = singleMethodInvoker;
     _singleEventPublisher          = singleEventPublisher;
 }
コード例 #12
0
        private static IFunctionInvoker CreateGeneric <TReflected, TReturnValue>(MethodInfo method, IMethodInvokerFactory methodInvokerFactory, IFunctionActivator functionActivator)
        {
            List <string?> parameterNames = method.GetParameters().Select(p => p.Name).ToList();

            IMethodInvoker <TReflected, TReturnValue> methodInvoker = methodInvokerFactory.Create <TReflected, TReturnValue>(method);

            return(new DefaultFunctionInvoker <TReflected, TReturnValue>(methodInvoker, functionActivator));
        }
コード例 #13
0
 public DefaultFunctionInvokerFactory(IMethodInvokerFactory methodInvokerFactory, IFunctionActivator functionActivator, IMethodInfoLocator methodLocator)
 {
     _methodInvokerFactory = methodInvokerFactory ?? throw new ArgumentNullException(nameof(methodInvokerFactory));
     _functionActivator    = functionActivator ?? throw new ArgumentNullException(nameof(functionActivator));
     _methodLocator        = methodLocator ?? throw new ArgumentNullException(nameof(methodLocator));
 }
コード例 #14
0
 public DefaultGoGoFactory(IMethodDescriptorCollectionProvider methodDescriptorCollectionProvider, IMethodInvokerFactory methodInvokerFactory)
 {
     _methodDescriptorCollectionProvider = methodDescriptorCollectionProvider;
     _methodInvokerFactory = methodInvokerFactory;
 }
コード例 #15
0
ファイル: EventResolver.cs プロジェクト: simis00873/Dasync
 public EventResolver(IMethodInvokerFactory methodInvokerFactory)
 {
     _methodInvokerFactory = methodInvokerFactory;
 }