Ejemplo n.º 1
0
/*---------------------------------------------------------------------------*/
static void
sent(struct stbroadcast_conn *stbroadcast)
{
  struct rudolph0_conn *c = (struct rudolph0_conn *)stbroadcast;

  if(c->current.datalen == RUDOLPH0_DATASIZE) {
    c->current.h.chunk++;
    PRINTF("Sending data chunk %d next time\n", c->current.h.chunk);
    read_new_datapacket(c);
  } else {
    stbroadcast_set_timer(&c->c, STEADY_TIME);
    PRINTF("Steady: Sending the same data chunk next time datalen %d, %d\n",
	   c->current.datalen, RUDOLPH0_DATASIZE);
  }
}
Ejemplo n.º 2
0
/*---------------------------------------------------------------------------*/
int
stbroadcast_send_stubborn(struct stbroadcast_conn *c, clock_time_t t)
{
  if(c->buf != NULL) {
    queuebuf_free(c->buf);
  }
  c->buf = queuebuf_new_from_packetbuf();
  if(c->buf == NULL) {
    return 0;
  }
  send(c);
  stbroadcast_set_timer(c, t);
  return 1;

}
Ejemplo n.º 3
0
/*---------------------------------------------------------------------------*/
static void
recv_nack(struct polite_conn *polite)
{
  struct rudolph0_conn *c = (struct rudolph0_conn *)
    ((char *)polite - offsetof(struct rudolph0_conn,
			     nackc));
  struct rudolph0_datapacket *p = packetbuf_dataptr();

  if(p->h.type == TYPE_NACK && c->state == STATE_SENDER) {
    if(p->h.version == c->current.h.version) {
      PRINTF("Reseting chunk to %d\n", p->h.chunk);
      c->current.h.chunk = p->h.chunk;
    } else {
      PRINTF("Wrong version, reseting chunk to 0\n");
      c->current.h.chunk = 0;
    }
    read_new_datapacket(c);
    stbroadcast_set_timer(&c->c, c->send_interval);
  }
}