Beispiel #1
0
bool pcu_order_receive(pcu_order o, pcu_msg* m)
{
  if (!o->ready)
    prepare(o, m);
  o->at++;
  if (o->at == o->count) {
    dtor_order(o);
    init_order(o);
    return false;
  }
  pcu_begin_buffer(&o->array[o->at]->buf);
  return true;
}
Beispiel #2
0
bool pcu_msg_receive(pcu_msg* m)
{
  if ((m->state != send_recv_state)&&
      (m->state != recv_state))
    reel_fail("PCU_Comm_Receive called at the wrong time");
  if ( ! pcu_msg_unpacked(m))
    reel_fail("PCU_Comm_Receive called before previous message unpacked");
  if (receive_global(m))
  {
    pcu_begin_buffer(&(m->received.buffer));
    return true;
  }
  m->state = idle_state;
  free_comm(m);
  make_comm(m);
  return false;
}