Iñaki Baz Castillo wrote:
El 20/08/07, Ramona Modroiu ramona@openser.org escribió:
Un ejemplo de codigo seria lo siguiente:
if(avp_check("$fU", "eq/xxx9/i")) { ... } else if(avp_check("$fU", "re/^xxx[0-8]$/i")) { ... }
En openser 1.2.x:
if($fU == "xxx9")) { ... } else if($fU =~ "^xxx[0-8]$") { ... }
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.
Y ya puestos: sé que los AVP numéricos en plan $avp(i:12) son más eficientes que los AVP de texto en plan $var(s:cadena), ya que cuesta menos referirse a un entero que a una cadena de texto. Pero, ¿no tendría sentido que en tiempo de compilación se convirtiesen los AVP de texto a AVP numéricos sin más? ya sé que existen los alias, pero sigue siendo una solución un poco "fea".
eso es una idea :)
Saludos, Ramona
En fin, cosillas que tenía previstas preguntar algún día y aprovechando la conversación lo saco ahora... XD
Saludos.
Users-es mailing list Users-es@openser.org http://openser.org/cgi-bin/mailman/listinfo/users-es