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); } }
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)); }
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> >(); }
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; }
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); }
public TransactionalStateConfiguration(ITransactionalStateConfiguration config, ParticipantId.Role supportedRoles = ParticipantId.Role.Resource | ParticipantId.Role.Manager) { this.name = config.StateName; this.storage = config.StorageName; this.SupportedRoles = supportedRoles; }