Iñaki Baz Castillo wrote:
Vaya, no había caído yo en la cuenta de que
también se pueden aplicar
expresiones regulares sin AVP's.
Por cierto, de cara a la eficiencia ¿existe alguna diferencia entre
usar AVPs de texto y variables? Quiero decir, ¿qué es más costoso
computacionalmente?:
a)
$avp(s:texto) = "XXXXXXXX";
if ( avp_check("$avp(s:texto)", "re/^xxx[0-8]$/i") ) { ...
b)
$var(texto) = "XXXXXXXX";
if ( $var(texto) =~" ^XXX") { ...
¿O tal vez sean igual de eficientes?
La variante b) es mas eficiente. Las variables suponen referencia
directa a la memoria privada. Sobre los AVPs ... hay una lista de AVPs
en la memoria compartida y significa mas busqueda dentro de esa lista.
avp_check() te hace falta si hay mas de un avp y quieres verificar las
todas. En el ejemplo anterior vale escribir if($avp(s:texto)) =~"^XXX")
{....}.
En caso de que sean igualmente costosas: ¿qué sentido tienen entonces
los AVP's de texto existiendo variables (las cuáles son más
"digestibles")?
Las variables viven dentro de un proceso. Las AVPs viven dentro de una
transaccion ... estan accesible dentro de la failure_route donde hay
otro proceso que el que habia procesado el mensaje original.
Tambien, las AVPs permiten valores multiples.
Te agradezco enormemente tan buena explicación, ya que además creo que
lo que me has explicado no viene documentado en ninguna parte.
Un saludo y de nuevo muchas gracias :)
--
Iñaki Baz Castillo
<ibc(a)aliax.net>