Beispiel #1
0
        public TransactionalState(
            ITransactionalStateConfiguration transactionalStateConfiguration,
            IGrainActivationContext context,
            ITransactionDataCopier <TState> copier,
            ITransactionAgent transactionAgent,
            IProviderRuntime runtime,
            ILoggerFactory loggerFactory,
            JsonSerializerSettings serializerSettings,
            IClock clock
            )
        {
            this.config           = transactionalStateConfiguration;
            this.context          = context;
            this.copier           = copier;
            this.transactionAgent = transactionAgent;
            this.runtime          = runtime;
            this.loggerFactory    = loggerFactory;
            this.clock            = new CausalClock(clock);

            lockWorker         = new BatchWorkerFromDelegate(LockWork);
            storageWorker      = new BatchWorkerFromDelegate(StorageWork);
            confirmationWorker = new BatchWorkerFromDelegate(ConfirmationWork);

            this.serializerSettings = serializerSettings;
        }
        public TransactionalState(
            ITransactionalStateConfiguration transactionalStateConfiguration,
            IGrainActivationContext context,
            ITransactionDataCopier <TState> copier,
            ITransactionAgent transactionAgent,
            IProviderRuntime runtime,
            ILoggerFactory loggerFactory,
            ITypeResolver typeResolver,
            IGrainFactory grainFactory)
        {
            this.config           = transactionalStateConfiguration;
            this.context          = context;
            this.copier           = copier;
            this.transactionAgent = transactionAgent;
            this.runtime          = runtime;
            this.loggerFactory    = loggerFactory;

            lockWorker         = new BatchWorkerFromDelegate(LockWork);
            storageWorker      = new BatchWorkerFromDelegate(StorageWork);
            confirmationWorker = new BatchWorkerFromDelegate(ConfirmationWork);

            if (MetaData.SerializerSettings == null)
            {
                MetaData.SerializerSettings = TransactionParticipantExtensionExtensions.GetJsonSerializerSettings(typeResolver, grainFactory);
            }
        }
Beispiel #3
0
        public ITransactionalState <TState> Create <TState>(ITransactionalStateConfiguration config) where TState : class, new()
        {
            TransactionalState <TState> transactionalState = ActivatorUtilities.CreateInstance <TransactionalState <TState> >(this.context.ActivationServices, config, this.serializerSettings, this.context);

            transactionalState.Participate(context.ObservableLifecycle);
            return(transactionalState);
        }
        public Factory <IGrainActivationContext, object> GetFactory(ParameterInfo parameter, TransactionalStateAttribute attribute)
        {
            ITransactionalStateConfiguration config = attribute;
            // use generic type args to define collection type.
            MethodInfo genericCreate = create.MakeGenericMethod(parameter.ParameterType.GetGenericArguments());

            object[] args = new object[] { config };
            return(context => Create(context, genericCreate, args));
        }
Beispiel #5
0
 public TransactionalState(ITransactionalStateConfiguration transactionalStateConfiguration, IGrainActivationContext context, ITransactionDataCopier <TState> copier, ITransactionAgent transactionAgent, IProviderRuntime runtime, ILoggerFactory loggerFactory)
 {
     this.config           = transactionalStateConfiguration;
     this.context          = context;
     this.copier           = copier;
     this.transactionAgent = transactionAgent;
     this.runtime          = runtime;
     this.logger           = loggerFactory.CreateLogger($"{this.GetType().FullName}.{this.context.GrainIdentity}.{this.config.StateName}");
     this.transactionCopy  = new Dictionary <long, TState>();
     this.storageExecutor  = new AsyncSerialExecutor <bool>();
     this.log = new SortedDictionary <long, LogRecord <TState> >();
 }
Beispiel #6
0
 public TransactionalState(
     ITransactionalStateConfiguration transactionalStateConfiguration,
     IGrainActivationContext context,
     ITransactionDataCopier <TState> copier,
     IProviderRuntime runtime,
     IGrainRuntime grainRuntime,
     ILoggerFactory loggerFactory,
     JsonSerializerSettings serializerSettings
     )
 {
     this.config             = transactionalStateConfiguration;
     this.context            = context;
     this.copier             = copier;
     this.runtime            = runtime;
     this.grainRuntime       = grainRuntime;
     this.loggerFactory      = loggerFactory;
     this.serializerSettings = serializerSettings;
 }
Beispiel #7
0
 public TransactionalState(
     ITransactionalStateConfiguration transactionalStateConfiguration,
     IGrainActivationContext context,
     ITransactionDataCopier <TState> copier,
     IProviderRuntime runtime,
     IGrainRuntime grainRuntime,
     ILoggerFactory loggerFactory,
     JsonSerializerSettings serializerSettings
     )
 {
     this.config             = transactionalStateConfiguration;
     this.context            = context;
     this.copier             = copier;
     this.runtime            = runtime;
     this.grainRuntime       = grainRuntime;
     this.loggerFactory      = loggerFactory;
     this.serializerSettings = serializerSettings;
     this.copiers            = new Dictionary <Type, object>();
     this.copiers.Add(typeof(TState), copier);
 }
Beispiel #8
0
 public TransactionalStateConfiguration(ITransactionalStateConfiguration config, ParticipantId.Role supportedRoles = ParticipantId.Role.Resource | ParticipantId.Role.Manager)
 {
     this.name           = config.StateName;
     this.storage        = config.StorageName;
     this.SupportedRoles = supportedRoles;
 }