ConcurrencyControl Class

Beta

ConcurrencyControl enables an app to coordinate local changes with changes that are being made by others to an iModel.

Methods

Name Description
constructor(_iModel: IModelDb): ConcurrencyControl    
abandonRequest(): void Abandon any pending requests for locks or codes.  
areAvailable(requestContext: AuthorizedClientRequestContext, req?: ConcurrencyControl.Request): Promise<boolean> Check to see if all of the requested resources could be acquired from iModelHub.  
areCodesAvailable(requestContext: AuthorizedClientRequestContext, req?: ConcurrencyControl.Request): Promise<boolean> Check to see that this briefcase could reserve (or has already reserved) all of the specified Codes.  
areCodesAvailable2(requestContext: AuthorizedClientRequestContext, codes: CodeProps[]): Promise<boolean> Check to see if all of the specified codes are available. Beta
areLocksAvailable(requestContext: AuthorizedClientRequestContext, req?: ConcurrencyControl.Request): Promise<boolean> Check to see if this briefcase could acquire (or already has acquired) the specified locks at that specified levels.  
buildConcurrencyControlRequestForDb(): void Schedule the shared Db lock.  
getHeldElementLock(elementId: Id64String): LockLevel    
getHeldLock(type: LockType, objectId: Id64String): LockLevel    
getHeldModelLock(modelId: Id64String): LockLevel    
lockCodeSpecs(requestContext: AuthorizedClientRequestContext): Promise<Lock[]> Obtain the CodeSpec lock.  
lockSchema(requestContext: AuthorizedClientRequestContext): Promise<Lock[]> Obtain the schema lock.  
onClose(_requestContext: AuthorizedClientRequestContext): Promise<void>    
onElementWrite(elementClass: undefined, element: ElementProps, opcode: DbOpcode): void    
onElementWritten(_elementClass: undefined, id: Id64String, opcode: DbOpcode): void    
onModelWrite(modelClass: undefined, model: ModelProps, opcode: DbOpcode): void    
onModelWritten(_modelClass: undefined, id: Id64String, opcode: DbOpcode): void    
onOpened(requestContext: AuthorizedClientRequestContext): Promise<void>    
onPushChanges(_requestContext: AuthorizedClientRequestContext): Promise<void>    
onPushedChanges(requestContext: AuthorizedClientRequestContext): Promise<void>    
openOrCreateCache(requestContext: AuthorizedClientRequestContext): Promise<void>    
queryCodeStates(requestContext: AuthorizedClientRequestContext, specId: Id64String, scopeId: string, value?: string): Promise<HubCode[]>    
request(requestContext: AuthorizedClientRequestContext, req?: ConcurrencyControl.Request): Promise<void> Try to acquire locks and/or reserve codes from iModelHub.  
requestResources(ctx: AuthorizedClientRequestContext, elements: ConcurrencyControl.ElementAndOpcode[], models?: ConcurrencyControl.ModelAndOpcode[], relationships?: ConcurrencyControl.RelationshipAndOpcode[]): Promise<void> Request the locks and/or Codes that will be required to carry out the intended write operations.  
reserveCodes(requestContext: AuthorizedClientRequestContext, codes: CodeProps[]): Promise<HubCode[]> Reserve the specified codes.  
setPolicy(policy: ConcurrencyControl.PessimisticPolicy | ConcurrencyControl.OptimisticPolicy): void Set the concurrency control policy.  
syncCache(requestContext: AuthorizedClientRequestContext): Promise<void>    

Properties

Name Type Description
codes Accessor ReadOnly ConcurrencyControl.Codes API to reserve Codes and query the status of Codes  
hasPendingRequests Accessor ReadOnly boolean Are there pending, unprocessed requests for locks or codes?  

Defined in

Last Updated: 05 June, 2020