public override object Generate(ISessionImplementor session, object obj) { if (maxLo < 1) { //keep the behavior consistent even for boundary usages long val = Convert.ToInt64(base.Generate(session, obj)); if (val == 0) { val = Convert.ToInt64(base.Generate(session, obj)); } return(IdentifierGeneratorFactory.CreateNumber(val, returnClass)); } if (lo > maxLo) { long hival = Convert.ToInt64(base.Generate(session, obj)); lo = 1; hi = hival * (maxLo + 1); if (log.IsDebugEnabled) { log.Debug("new hi value: " + hival); } } return(IdentifierGeneratorFactory.CreateNumber(hi + lo++, returnClass)); }
public override async Task <object> GenerateAsync(ISessionImplementor session, object obj, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); using (await _generate.LockAsync()) { if (maxLo < 1) { //keep the behavior consistent even for boundary usages long val = Convert.ToInt64(await(base.GenerateAsync(session, obj, cancellationToken)).ConfigureAwait(false)); if (val == 0) { val = Convert.ToInt64(await(base.GenerateAsync(session, obj, cancellationToken)).ConfigureAwait(false)); } return(IdentifierGeneratorFactory.CreateNumber(val, returnClass)); } if (lo > maxLo) { long hival = Convert.ToInt64(await(base.GenerateAsync(session, obj, cancellationToken)).ConfigureAwait(false)); lo = (hival == 0) ? 1 : 0; hi = hival * (maxLo + 1); if (log.IsDebugEnabled) { log.Debug("new hi value: " + hival); } } return(IdentifierGeneratorFactory.CreateNumber(hi + lo++, returnClass)); } }
/// <summary> /// Generate a <see cref="Int64"/> for the identifier by selecting and updating a value in a table. /// </summary> /// <param name="session">The <see cref="ISessionImplementor"/> this id is being generated in.</param> /// <param name="obj">The entity for which the id is being generated.</param> /// <returns>The new identifier as a <see cref="Int64"/>.</returns> public override object Generate(ISessionImplementor session, object obj) { using (_asyncLock.Lock()) { if (maxLo < 1) { //keep the behavior consistent even for boundary usages long val = Convert.ToInt64(base.Generate(session, obj)); if (val == 0) { val = Convert.ToInt64(base.Generate(session, obj)); } return(IdentifierGeneratorFactory.CreateNumber(val, returnClass)); } if (lo > maxLo) { long hival = Convert.ToInt64(base.Generate(session, obj)); lo = (hival == 0) ? 1 : 0; hi = hival * (maxLo + 1); log.Debug("New high value: {0}", hival); } return(IdentifierGeneratorFactory.CreateNumber(hi + lo++, returnClass)); } }
public object Generate(ISessionImplementor session, object obj) { if (sql != null) { getNext(session); } return(IdentifierGeneratorFactory.CreateNumber(next++, returnClass)); }
public override object Generate(ISessionImplementor session, object obj) { if (lo > maxLo) { long hival = Convert.ToInt64(base.Generate(session, obj)); lo = 1; hi = hival * (maxLo + 1); log.Debug("new hi value: " + hival); } return(IdentifierGeneratorFactory.CreateNumber(hi + lo++, returnClass)); }
public async Task <object> GenerateAsync(ISessionImplementor session, object obj, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); using (await _generate.LockAsync()) { if (_sql != null) { await(GetNextAsync(session, cancellationToken)).ConfigureAwait(false); } return(IdentifierGeneratorFactory.CreateNumber(_next++, _returnClass)); } }
/// <summary> /// /// </summary> /// <param name="session"></param> /// <param name="obj"></param> /// <returns></returns> public object Generate(ISessionImplementor session, object obj) { using (_asyncLock.Lock()) { if (_sql != null) { GetNext(session); } return(IdentifierGeneratorFactory.CreateNumber(_next++, _returnClass)); } }