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; }
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; }