/// <summary> /// Initializes a new instance of the <see cref="Metadata"/> class. /// </summary> internal Metadata( Uri name, Type type, IStateProvider2 stateProvider, byte[] initializationParameters, long stateProviderId, long parentId, long createLsn, long deleteLsn, MetadataMode metadataMode, bool transientCreate) { Utility.Assert(name != null, "Name cannot be empty in metadata."); Utility.Assert(type != null, "type cannot be null."); Utility.Assert(stateProvider != null, "state provider cannot be null."); Utility.Assert( stateProviderId != DynamicStateManager.EmptyStateProviderId, "state provider id cannot be empty."); // Parent Id can be empty so do not assert on it. this.Initialize( name, type, stateProvider, initializationParameters, stateProviderId, parentId, createLsn, deleteLsn, metadataMode, transientCreate); }
/// <summary> /// Initializes metadata. /// </summary> private void Initialize( Uri name, Type type, IStateProvider2 stateProvider, byte[] initializationParameters, long stateProviderId, long parentId, long createLsn, long deleteLsn, MetadataMode metadataMode, bool transientCreate) { this.Name = name; this.Type = type; this.StateProvider = stateProvider; this.StateProviderId = stateProviderId; this.InitializationContext = initializationParameters; this.CreateLsn = createLsn; this.DeleteLsn = deleteLsn; this.TransientCreate = transientCreate; this.TransientDelete = false; this.checkpointFlag = 1; this.MetadataMode = metadataMode; this.TransactionId = 0; this.ParentStateProviderId = parentId; }
/// <summary> /// Registers state provider with the state manager. /// </summary> /// <param name="transaction">Transaction that this operation is a part of.</param> /// <param name="stateProviderName">Name of the state provider that needs to be registered.</param> /// <param name="stateProvider">State provider that needs to be registered.</param> /// <exception cref="System.ArgumentException">Not supported state provider type or state provider is already present or state provider name is a reserved name.</exception> /// <exception cref="System.ArgumentNullException">StateProviderName is null or StateProvider is null or transaction is null.</exception> /// <exception cref="System.TimeoutException">Specified timeout has expired.</exception> /// <exception cref="System.Fabric.FabricNotPrimaryException">Replica was transitioned out of primary role.</exception> /// <exception cref="System.Fabric.FabricObjectClosedException">Replica was closed.</exception> /// <returns>Task that represents the asynchronous operation.</returns> public async Task AddStateProviderAsync( Transaction transaction, Uri stateProviderName, IStateProvider2 stateProvider) { await this.stateManager.AddStateProviderAsync( transaction, stateProviderName, stateProvider, this.DefaultTimeout, this.DefaultCancellationToken).ConfigureAwait(false); }