void pnc_ops_parse_response(const char *method_name, enum pubnub_res res, pubnub_t *pn) { struct UserData *pUserData = pubnub_get_user_data(pn); if (res != PNR_STARTED) { printf("%s returned unexpected %d: %s\n", method_name, res, pubnub_res_2_string(res)); return; } await(pUserData); }
enum pubnub_res pubnub_subloop_start(pubnub_subloop_t* pbsld) { enum pubnub_res rslt; pubnub_callback_t saved_ctx_cb; void* saved_ctx_data; PUBNUB_ASSERT_OPT(NULL != pbsld); pubnub_mutex_lock(pbsld->monitor); PUBNUB_ASSERT_OPT(NULL != pbsld->pbp); saved_ctx_cb = pubnub_get_callback(pbsld->pbp); saved_ctx_data = pubnub_get_user_data(pbsld->pbp); rslt = pubnub_register_callback(pbsld->pbp, sublup_context_callback, pbsld); if (PNR_OK == rslt) { pbsld->saved_context_cb = saved_ctx_cb; pbsld->saved_context_user_data = saved_ctx_data; rslt = pubnub_subscribe_ex(pbsld->pbp, pbsld->channel, pbsld->options); } pubnub_mutex_unlock(pbsld->monitor); return rslt; }