Open marianogenovese opened 8 years ago
Es posible cambiar la sintaxis de la siguiente forma mas natural?
actual: apply repetition cambio: 'repeat', unsigned_int_value, 'times';
actual: apply duration cambio: 'terminate', 'in', timespan_value
Si se propone otra sintaxis también debería haber cambio en apply window. Lo que se propuso fue mantener el mismo concepto bajo 'apply' si existen nuevas funciones se mantengan bajo apply ademas a nivel de lenguaje sabrías que la semantica y sintaxis esta correcta con apply y con futuras funciones.
Lo ultimo no entendí muy bien a que se refiere pero respecto a los primeros argumentos que otras funciones agregaremos ? Ademásdeberiamos buscar seguir la línea de la facilidad para los futuros usuarios
Hasta ahora vemos la necesidad de repetition window y duration por eso van con la funcion apply si existen nuevos que más adelante vemos la necesidad de incluirlos ya tendriamos agrupados todos estas funciones bajo la palabra apply. Yo creo que no es dificil entender el concepto de apply.
Una funcionalidad extra que se me ocurre, que hasta el momento pienso no lleva mucho esfuerzo implementarlo, es poner una duración pero especificando fecha y hora. Con la otra sintaxis quedaría asi:
'terminate', 'in', timespan_value -> 'apply', 'duration', timespan_value 'terminate', 'at', datetime_value -> ?
Esto nos permitiría crear un stream que termine por ejemplo a alguna hora y fecha espeficicada. Ademas cabe destacar que son mutuamente excluyentes, solo se podrá especificar uno u otro.
¿Qué piensa de esta extensión?. Puede poner la sintaxis para ese ejemplo en apply para que lo agregue a la gramática de space.
Seria una variante, pero eso conllevaria a que los stream tengan un status de iniciado (start) y detenido (stop) cosa que actualmente no existe. Por consiguiente no deberia ser terminate sino al relacionado con stop.
Hasta el momento apply repetition se comporta como se espera, sin embargo, apply duration no se está comportando como se esperaba ya que no para el observable al terminar el tiempo especificado, cabe destacar que en un observable de prueba si termina el observable al cumplir el tiempo especificado.
Observable de prueba (funciona como se espera)
Confirmaré si el mal comportamiento se debe al framework de pruebas
Se necesita buscar una solución para poder probar esta extensión con el framework de pruebas ya que, como se muestra en la imagen de abajo, se esta ignorando los tiempos del take
Se debe encontrar la razón de por qué con
buffer
no pasa el mismo problema pero contake
esta ignorando el tiempo especificado.
El problema estaba en la creación del observable que se utiliza de input para la prueba, el framework maneja tiempos mediante ticks, por lo tanto hay que colocar los tiempos en cantidad de ticks. Ej.
100 milisegundos -> TimeSpan.FromMilliseconds(100).Ticks ->1000000 1 segundo -> TimeSpan.FromSeconds(1).Ticks -> 10000000
Por la necesidad de tener nuevos comportamientos en los querys, se han creando nuevos argumentos en apply del query. Anteriormente existia un solo apply que era apply window por lo que se requiere cambiar en la gramatica para que sea una lista de apply que incluyan: