feat(batch28): implement jetstream api dispatch and account request core
This commit is contained in:
@@ -127,6 +127,72 @@ public sealed partial class Account
|
||||
return (server, jsa, null);
|
||||
}
|
||||
|
||||
internal void TrackAPI()
|
||||
{
|
||||
_mu.EnterReadLock();
|
||||
var jsa = JetStream;
|
||||
_mu.ExitReadLock();
|
||||
if (jsa is null)
|
||||
return;
|
||||
|
||||
jsa.UsageLock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
jsa.UsageApi++;
|
||||
jsa.ApiTotal++;
|
||||
jsa.SendClusterUsageUpdate();
|
||||
|
||||
if (jsa.Js is JetStream js)
|
||||
Interlocked.Add(ref js.ApiTotal, 1);
|
||||
}
|
||||
finally
|
||||
{
|
||||
jsa.UsageLock.ExitWriteLock();
|
||||
}
|
||||
}
|
||||
|
||||
internal void TrackAPIErr()
|
||||
{
|
||||
_mu.EnterReadLock();
|
||||
var jsa = JetStream;
|
||||
_mu.ExitReadLock();
|
||||
if (jsa is null)
|
||||
return;
|
||||
|
||||
jsa.UsageLock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
jsa.UsageApi++;
|
||||
jsa.ApiTotal++;
|
||||
jsa.UsageErr++;
|
||||
jsa.ApiErrors++;
|
||||
jsa.SendClusterUsageUpdate();
|
||||
|
||||
if (jsa.Js is JetStream js)
|
||||
{
|
||||
Interlocked.Add(ref js.ApiTotal, 1);
|
||||
Interlocked.Add(ref js.ApiErrors, 1);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
jsa.UsageLock.ExitWriteLock();
|
||||
}
|
||||
}
|
||||
|
||||
internal (bool Enabled, bool ShouldError) CheckJetStream()
|
||||
{
|
||||
_mu.EnterReadLock();
|
||||
try
|
||||
{
|
||||
return (JetStream is not null, _nleafs + _nrleafs == 0);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_mu.ExitReadLock();
|
||||
}
|
||||
}
|
||||
|
||||
internal (bool MaxBytesRequired, long MaxStreamBytes) MaxBytesLimits(StreamConfig? cfg)
|
||||
{
|
||||
_mu.EnterReadLock();
|
||||
|
||||
Reference in New Issue
Block a user