Exemplo n.º 1
0
void mwChannel_recv(struct mwChannel *chan, struct mwMsgChannelSend *msg) {
  if(chan->state == mwChannel_OPEN) {
    channel_recv(chan, msg);

  } else {
    queue_incoming(chan, msg);
  }
}
Exemplo n.º 2
0
int dbus_msg_queue_read(dbus_msg_queue *q, dbus_io *io)
{
    dbus_msg *msg;
    int rv = dbus_msg_recv( io, &msg );
    if (rv < 0) {
        return rv;
    }
    return queue_incoming( q, msg );
}
Exemplo n.º 3
0
int dbus_msg_send_and_wait_reply(dbus_msg_queue *q, dbus_io *io, dbus_msg *msg, dbus_msg **reply)
{
    int rv;
    *reply = NULL;
    rv = dbus_msg_send(io, msg);
    if (rv < 0) {
        return rv;
    }
    for (;;) {
        dbus_msg *recv_msg = NULL;
        rv = dbus_msg_recv( io, &recv_msg );
        if (rv < 0) {
            return rv;
        }
        if (recv_msg->reply_serial == msg->serial) {
            *reply = recv_msg;
            return 0;
        }
        rv = queue_incoming( q, recv_msg );
        if (rv < 0) {
            return rv;
        }
    }
}