static void phonebook_size_result(const char *buffer, size_t bufsize, int vcards, int missed, gboolean lastpart, void *user_data) { struct pbap_session *pbap = user_data; uint16_t phonebooksize; if (pbap->obj->request) { phonebook_req_finalize(pbap->obj->request); pbap->obj->request = NULL; } if (vcards < 0) vcards = 0; DBG("vcards %d", vcards); phonebooksize = htons(vcards); pbap->obj->aparams = g_byte_array_new(); pbap->obj->aparams = append_aparam_header(pbap->obj->aparams, PHONEBOOKSIZE_TAG, &phonebooksize); if (missed > 0) { DBG("missed %d", missed); pbap->obj->aparams = append_aparam_header(pbap->obj->aparams, NEWMISSEDCALLS_TAG, &missed); } obex_object_set_io_flags(pbap->obj, G_IO_IN, 0); }
static void phonebook_size_result(const char *buffer, size_t bufsize, int vcards, int missed, gboolean lastpart, void *user_data) { struct pbap_session *pbap = user_data; uint16_t phonebooksize; if (pbap->obj->request) { phonebook_req_finalize(pbap->obj->request); pbap->obj->request = NULL; } if (vcards < 0) vcards = 0; DBG("vcards %d", vcards); phonebooksize = vcards; pbap->obj->apparam = g_obex_apparam_set_uint16(NULL, PHONEBOOKSIZE_TAG, phonebooksize); pbap->obj->firstpacket = TRUE; if (missed > 0) { DBG("missed %d", missed); pbap->obj->apparam = g_obex_apparam_set_uint16( pbap->obj->apparam, NEWMISSEDCALLS_TAG, missed); } obex_object_set_io_flags(pbap->obj, G_IO_IN, 0); }
static void cache_ready_notify(void *user_data) { struct pbap_session *pbap = user_data; DBG(""); phonebook_req_finalize(pbap->obj->request); pbap->obj->request = NULL; pbap->cache.valid = TRUE; generate_response(pbap); obex_object_set_io_flags(pbap->obj, G_IO_IN, 0); }
static void phonebook_size_result(const char *buffer, size_t bufsize, int vcards, int missed, gboolean lastpart, void *user_data) { struct irmc_session *irmc = user_data; DBG("vcards %d", vcards); irmc->params->maxlistcount = vcards; if (irmc->request) { phonebook_req_finalize(irmc->request); irmc->request = NULL; } }
static void query_result(const char *buffer, size_t bufsize, int vcards, int missed, gboolean lastpart, void *user_data) { struct irmc_session *irmc = user_data; const char *s, *t; DBG("bufsize %zu vcards %d missed %d", bufsize, vcards, missed); if (irmc->request) { phonebook_req_finalize(irmc->request); irmc->request = NULL; } /* first add a 'owner' vcard */ if (!irmc->buffer) irmc->buffer = g_string_new(owner_vcard); else irmc->buffer = g_string_append(irmc->buffer, owner_vcard); if (buffer == NULL) goto done; /* loop around buffer and add X-IRMC-LUID attribs */ s = buffer; while ((t = strstr(s, "UID:")) != NULL) { /* add upto UID: into buffer */ irmc->buffer = g_string_append_len(irmc->buffer, s, t-s); /* * add UID: line into buffer * Not sure if UID is still needed if X-IRMC-LUID is there */ s = t; t = strstr(s, "\r\n"); t += 2; irmc->buffer = g_string_append_len(irmc->buffer, s, t-s); /* add X-IRMC-LUID with same number as UID */ irmc->buffer = g_string_append_len(irmc->buffer, "X-IRMC-LUID:", 12); s += 4; /* point to uid number */ irmc->buffer = g_string_append_len(irmc->buffer, s, t-s); s = t; } /* add remaining bit of buffer */ irmc->buffer = g_string_append(irmc->buffer, s); done: obex_object_set_io_flags(irmc, G_IO_IN, 0); }
static int irmc_close(void *object) { struct irmc_session *irmc = object; DBG(""); if (irmc->buffer) { g_string_free(irmc->buffer, TRUE); irmc->buffer = NULL; } if (irmc->request) { phonebook_req_finalize(irmc->request); irmc->request = NULL; } return 0; }
static int vobject_close(void *object) { struct pbap_object *obj = object; DBG(""); if (obj->session) obj->session->obj = NULL; if (obj->buffer) g_string_free(obj->buffer, TRUE); if (obj->aparams) g_byte_array_free(obj->aparams, TRUE); if (obj->request) phonebook_req_finalize(obj->request); g_free(obj); return 0; }
static void query_result(const char *buffer, size_t bufsize, int vcards, int missed, gboolean lastpart, void *user_data) { struct pbap_session *pbap = user_data; DBG(""); if (pbap->obj->request && lastpart) { phonebook_req_finalize(pbap->obj->request); pbap->obj->request = NULL; } pbap->obj->lastpart = lastpart; if (vcards < 0) { obex_object_set_io_flags(pbap->obj, G_IO_ERR, -ENOENT); return; } if (!pbap->obj->buffer) pbap->obj->buffer = g_string_new_len(buffer, bufsize); else pbap->obj->buffer = g_string_append_len(pbap->obj->buffer, buffer, bufsize); if (missed > 0) { DBG("missed %d", missed); pbap->obj->firstpacket = TRUE; pbap->obj->apparam = g_obex_apparam_set_uint16( pbap->obj->apparam, NEWMISSEDCALLS_TAG, missed); } obex_object_set_io_flags(pbap->obj, G_IO_IN, 0); }
static void cache_entry_done(void *user_data) { struct pbap_session *pbap = user_data; const char *id; int ret; DBG(""); pbap->cache.valid = TRUE; id = cache_find(&pbap->cache, pbap->find_handle); if (id == NULL) { DBG("Entry %d not found on cache", pbap->find_handle); obex_object_set_io_flags(pbap->obj, G_IO_ERR, -ENOENT); return; } phonebook_req_finalize(pbap->obj->request); pbap->obj->request = phonebook_get_entry(pbap->folder, id, pbap->params, query_result, pbap, &ret); if (ret < 0) obex_object_set_io_flags(pbap->obj, G_IO_ERR, ret); }