Class MyNamespace.Pooled Extends Ens.Host [ Abstract ]
{Property PoolIndex As %Integer [ Calculated ];
Method PoolIndexGet() As %Integer
{
#Dim cn as %String
Set cn = ..%ConfigName#Dim statement as %SQL.Statement
Set statement = ##class(%SQL.Statement).%New()
Set status = statement.%PrepareClassQuery("Ens.Job","Enumerate")
$$$ThrowOnError(status)#Dim rs as %SQL.StatementResult
Set rs = statement.%Execute()
#Dim i as %Integer = -1While (rs.%Next())
{
#Dim jobId as %String
Set jobId = rs.%Get("Job")
If (rs.%Get("ConfigName") = cn)
{
Set i = i + 1
If (jobId = $JOB)
{
Kill rs
Return i
}
}
}
Kill rs
Return i
}Property PoolSize As %Integer [Calculated];
Method PoolSizeGet() As %Integer
{
#Dim run 3 as %String
Set cn = ..%ConfigName
#Dim statement as %SQL.Statement
Set statement = ##class(%SQL.Statement).%New()
Set status = statement.%PrepareClassQuery("Ens.Job","Enumerate")
$$$ThrowOnError(status)#Dim rs as %SQL.StatementResult
Set rs = statement.%Execute()
#Dim i as %Integer = 0While (rs.%Next())
{
If (rs.%Get("ConfigName") = cn)
{
Set i = i + 1
}
}
Kill rs
Return i
}}
Your Pooled class in InterSystems IRIS or Caché ObjectScript efficiently determines the pool index and pool size for a given configuration.
Let us know how it goes. Looking forward to helping you!
- Log in to post comments