[Proyecto Internet] Comentarios sobre eventos GWN

[Proyecto Internet] Comentarios sobre eventos GWN

de Martin Randall -
Número de respuestas: 1

Buenas, como habrán visto, la idea de la función process_data es que se va a activar cada vez que le llegue un evento de GWN.

En esta versión sencilla, trabajaremos con tres tipos de eventos. Estos son identificables por su "nickname", una característica de estos eventos. Se puede acceder a este nickname a través de "ev.nickname". Veamos:

  • el evento de tipo "Dato", que representa un dato con información (para transmitir, o a recibir). Si queremos ver si el evento que llegó es de tipo "Dato", podemos comparar su nickname con DataData, por ejemplo: "if ev.nickname=='DataData':"
  • el evento de tipo "Ack", que representa un reconocimiento. Estos tienen como nickname "CtrlACK".
  • el evento de tipo "timeout", que llega cuando expira el temporizador. Estos tienen como nickname "TimerACKTout".
Por otro lado, en la creación del bloque generamos un temporizador. Podríamos tener varios, en esta parte usaremos sólo uno (con eso nos alcanza). En particular, para activar ese temporizador, debemos usar:

block.timeouts[0].start(timeout=block.timeout, nickname='TimerACKTout')

En donde el [0] representa el número del temporizador, en este caso siempre será 0. Luego timeout, el primer parámetro, corresponde al tiempo que durará el temporizador. En el ejemplo que habíamos hecho, lo podíamos setear desde afuera, pero también podríamos forzarlo a un valor. En esta parte lo que estamos haciendo es decir "el valor del timeout es de block.timeout", si estamos usando esta activación dentro de la clase, alcanza con reemplazar "block." por "self." . En el nickname le estamos diciendo el nombre que portará el evento creado al expirar el temporizador. Si usamos esta función dentro del process_data, será:

self.timeouts[0].start(timeout=self.timeout, nickname='TimerACKTout')

Donde previamente debemos haber definido un valor para la variable de la clase self.timeout.

Para cancelar un temporizador, debemos hacer:

block.timeouts[0].cancel()

o, si la usamos dentro de la clase,

self.timeouts[0].cancel()

Finalmente, un grupo hizo preguntas respecto de "qué había que entregar". La idea es que entreguen los bloques de transmisión y recepción del Stop and Wait. Si lo integraron a un flowgraph, aunque sea el de test con canal virtual, etc, bárbaro. De hecho, deberán testearlo usando ese flowgraph, así que hasta ahí esperamos que todos lleguemos. Si además quieren testear el chat, es cambiar unos pocos bloques nomás, en uno o dos días subimos las instrucciones para este test.

Finalmente, puede que les surjan dudas o trancazos vinculados a GWN. Estamos a disposición para ayudarlos, así que no duden en pegar el chiflido!

Saludos,

Martín y Claudina


En respuesta a Martin Randall

Re: [Proyecto Internet] Comentarios sobre eventos GWN

de Martin Randall -

Buenas, ya le comente a ambos grupos, pero igual para que quede por escrito.

Para trabajar con numeros de secuencia, los eventos tienen un diccionario asociado, el cual carga con varios valores propios del evento. En particular, en:

ev.ev_dc['seq_nr']=algun_numero

pueden fijar el valor, o tambien consultarlo, por ejemplo:

if ev.ev_dc['seq_nr']==3:

    etc...

Saludos,

Martin