From 4549f997e8523358ff812aac09465364f6f77b7b Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Tue, 30 Aug 2011 12:33:20 +0300 Subject: [PATCH] gobex: Add client transfer functions taking a pre-created GObexPacket --- gobex/gobex-transfer.c | 46 ++++++++++++++++++++++++++++++++++++++++++ gobex/gobex.h | 8 ++++++++ 2 files changed, 54 insertions(+) diff --git a/gobex/gobex-transfer.c b/gobex/gobex-transfer.c index edf999266..3978c1375 100644 --- a/gobex/gobex-transfer.c +++ b/gobex/gobex-transfer.c @@ -207,6 +207,30 @@ static struct transfer *transfer_new(GObex *obex, guint8 opcode, return transfer; } +guint g_obex_put_req_pkt(GObex *obex, GObexPacket *req, + GObexDataProducer data_func, GObexFunc complete_func, + gpointer user_data, GError **err) +{ + struct transfer *transfer; + + if (g_obex_packet_get_operation(req, NULL) != G_OBEX_OP_PUT) + return 0; + + transfer = transfer_new(obex, G_OBEX_OP_PUT, complete_func, user_data); + transfer->data_producer = data_func; + + g_obex_packet_add_body(req, put_get_data, transfer); + + transfer->req_id = g_obex_send_req(obex, req, -1, transfer_response, + transfer, err); + if (transfer->req_id == 0) { + transfer_free(transfer); + return 0; + } + + return transfer->id; +} + guint g_obex_put_req(GObex *obex, GObexDataProducer data_func, GObexFunc complete_func, gpointer user_data, GError **err, guint8 first_hdr_id, ...) @@ -346,6 +370,28 @@ guint g_obex_put_rsp(GObex *obex, GObexPacket *req, return transfer->id; } +guint g_obex_get_req_pkt(GObex *obex, GObexPacket *req, + GObexDataConsumer data_func, GObexFunc complete_func, + gpointer user_data, GError **err) +{ + struct transfer *transfer; + + if (g_obex_packet_get_operation(req, NULL) != G_OBEX_OP_GET) + return 0; + + transfer = transfer_new(obex, G_OBEX_OP_GET, complete_func, user_data); + transfer->data_consumer = data_func; + + transfer->req_id = g_obex_send_req(obex, req, -1, transfer_response, + transfer, err); + if (transfer->req_id == 0) { + transfer_free(transfer); + return 0; + } + + return transfer->id; +} + guint g_obex_get_req(GObex *obex, GObexDataConsumer data_func, GObexFunc complete_func, gpointer user_data, GError **err, guint8 first_hdr_id, ...) diff --git a/gobex/gobex.h b/gobex/gobex.h index e210e7954..1b20333cb 100644 --- a/gobex/gobex.h +++ b/gobex/gobex.h @@ -96,10 +96,18 @@ guint g_obex_put_req(GObex *obex, GObexDataProducer data_func, GObexFunc complete_func, gpointer user_data, GError **err, guint8 first_hdr_id, ...); +guint g_obex_put_req_pkt(GObex *obex, GObexPacket *req, + GObexDataProducer data_func, GObexFunc complete_func, + gpointer user_data, GError **err); + guint g_obex_get_req(GObex *obex, GObexDataConsumer data_func, GObexFunc complete_func, gpointer user_data, GError **err, guint8 first_hdr_id, ...); +guint g_obex_get_req_pkt(GObex *obex, GObexPacket *req, + GObexDataConsumer data_func, GObexFunc complete_func, + gpointer user_data, GError **err); + guint g_obex_put_rsp(GObex *obex, GObexPacket *req, GObexDataConsumer data_func, GObexFunc complete_func, gpointer user_data, GError **err, -- 2.47.3