int main() { char buf[8192], tmp[8192]; mc_pack_t *mc=(mc_pack_t *)malloc(8192); mc_pack_t *p; int ret; p=mc_pack_create(buf, sizeof(buf)); if(MC_PACK_PTR_ERR(p)){ puts("faint"); return -1; } ret=mc_pack_putf(p, "cmd:%s", "SET"); mc_pack_close(p); printf("%d\n",mc_pack_get_size(p)); memcpy(mc, p, mc_pack_get_size(p)); mc_pack_pack2str(mc, tmp, sizeof(tmp)); printf("%s\n", tmp); return 0; }
static int pack_data(char* dest_buf, int dest_buf_len, int post_count, const delpost_record_t* records) { const int TMP_BUF_SIZE = 1024 * 1024; char tmp_buffer[TMP_BUF_SIZE]; mc_pack_t* res_pack = mc_pack_open_w(1, dest_buf, dest_buf_len, tmp_buffer, sizeof (tmp_buffer)); if(MC_PACK_PTR_ERR(res_pack) != 0) { UB_LOG_WARNING("mc_pack_create error"); return -1; } int ret = 0; ret = mc_pack_put_int32(res_pack, "post_count", post_count); if (ret != 0) { UB_LOG_WARNING("post_count[ret=%d, post_count=%d] put error.", ret, post_count); return -1; } mc_pack_t* res_array = mc_pack_put_array(res_pack, "del_post_info"); if (res_array == NULL || MC_PACK_PTR_ERR(res_array) != 0) { UB_LOG_WARNING("mc_pack_put_array del_post_info[ret=%p, MC_PACK_PTR_ERR=%d] error", res_array, MC_PACK_PTR_ERR(res_array)); return -1; } for (int i = 0; i < post_count; i++) { mc_pack_t* obj = mc_pack_put_object(res_array, NULL); if (obj == NULL || MC_PACK_PTR_ERR(obj) != 0) { UB_LOG_WARNING("mc_pack_put_object res_array[ret=%p, MC_PACK_PTR_ERR=%d] error", obj, MC_PACK_PTR_ERR(obj)); return -1; } int r = 0; r = mc_pack_put_uint64(obj, "post_id", (mc_uint64_t)records[i].post_id); if (r != 0) { UB_LOG_WARNING("mc_pack_put_uint64 post_id[pid=%lu, ret=%d] error", records[i].post_id, r); return -1; } r = mc_pack_put_nstr(obj, "user_name", records[i].username, strlen(records[i].username) + 1); if (r != 0) { UB_LOG_WARNING("mc_pack_put_uint64 user_name[username=%s, ret=%d] error", records[i].username, r); return -1; } r = mc_pack_put_uint32(obj, "del_time", records[i].del_time); if (r != 0) { UB_LOG_WARNING("mc_pack_put_uint64 del_time[del_time=%u, ret=%d] error", records[i].del_time, r); return -1; } } mc_pack_close(res_pack); return mc_pack_get_size(res_pack); }