public T AssignId <T>(IdContext_I context, T objectToAssign) where T : Ided_I { AssignId(context, (Ided_I)objectToAssign); return(objectToAssign); }
public Id_I IssueId(IdContext_I context) { StandardId standardId = new StandardId(); IssueId(context, standardId); return(standardId); }
public Ided_I AssignId(IdContext_I context, Ided_I objectToAssign) { IssueId(context, out Id_I id); objectToAssign.Id = id; return(objectToAssign); }
public bool IssueId <T>(IdContext_I context, out T id) where T : Identifier_I { lock (context.SyncRoot) { id = XNew.New <T>(); return(IssueId <T>(context, id)); } }
public AvailableIdRange_I IssueNextAvailableRange(IdContext_I context) { var newRange = IssueRange(context, context.DefaultIdRangeSize); var availableRange = new AvailableIdRange() { LastIssuedId = newRange.StartInclusive - 1, StartInclusive = newRange.StartInclusive, EndInclusive = newRange.EndInclusive }; context.AvailableRange = availableRange; return(availableRange); }
public bool IssueId <T>(IdContext_I context, T identifier) where T : Identifier_I { lock (context.SyncRoot) { bool availableRangeUpdated = false; if (context.AvailableRange == null || context.AvailableRange.LastIssuedId >= context.AvailableRange.EndInclusive || context.AvailableRange.StartInclusive == 0 || context.AvailableRange.EndInclusive == 0) { context.AvailableRange = IssueNextAvailableRange(context); XSettings.SetAndPersist(LastIdIssuedKey, context.AvailableRange.EndInclusive.ToString()); availableRangeUpdated = true; } identifier.Value = (++context.AvailableRange.LastIssuedId); return(availableRangeUpdated); } }
public void Initialize(IdContext_I context) { if (XSettings.GetString(LastIdIssuedKey, out string lastIdIssued) && !string.IsNullOrEmpty(lastIdIssued) && Int64.TryParse(lastIdIssued, out long lastId)) { context.AvailableRange = new AvailableIdRange() { LastIssuedId = lastId }; return; } XSettings.SetAndPersist(LastIdIssuedKey, "0"); context.AvailableRange = new AvailableIdRange() { LastIssuedId = 0 }; }
public IdRange_I IssueRange(IdContext_I context, int size) { lock (context.SyncRoot) { var lastIdentifierIssued = context.AvailableRange.LastIssuedId; var start = lastIdentifierIssued + 1; var stop = start - 1 + size; var range = new IdRange() { EndInclusive = stop, StartInclusive = start }; context.AvailableRange.LastIssuedId = range.EndInclusive; return(range); } }