void *_ortc_saveAuthentication(void *ptr){ ortc_authenticationParams *p = (ortc_authenticationParams*)ptr; char *response, *url, *appKey; if(p->isExtended){ if(p->isCluster){ if(_ortc_getBalancer(p->url, p->appKey, p->context->verifyPeerCert, &url)<0){ p->callback(p->context, url, NULL); free(url); url = NULL; } } else { url = p->url; } appKey = p->appKey; } else { url = p->context->server; appKey = p->context->appKey; } if(url){ int ret = _ortc_saveAuthRest(url, p->authToken, p->isPrivate, appKey, p->ttl, p->privateKey, p->permissions, p->sizeOfChannelPermissions, &response); switch(ret){ case 1: p->callback(p->context, NULL, response); break; default: p->callback(p->context, response, NULL); } free(response); } free(p); pthread_detach(pthread_self()); return 0; }
void *_ortc_disablePresence(void *ptr){ ortc_presenceParams *p = (ortc_presenceParams*)ptr; char *response, *url, *appKey; if(p->isExtended){ if(p->isCluster){ if(_ortc_getBalancer(p->url, &url)<0){ p->callbackCmd(p->context, p->channel, url, NULL); free(url); url = NULL; } } else { url = p->url; } appKey = p->appKey; } else { url = p->context->server; appKey = p->context->appKey; } if(url){ int ret = _ortc_disablePresenceRest(url, appKey, p->privateKey, p->channel, &response); _ortc_call_presence_callback(p->context, ret, p->channel, response, p->callbackCmd); if(p->isExtended && p->isCluster) free(url); } free(p); pthread_detach(pthread_self()); return 0; }
void *_ortc_presence(void *ptr){ ortc_presenceParams *p = (ortc_presenceParams*)ptr; char *response, *url, *appKey, *authToken; if(p->isExtended){ if(p->isCluster){ if(_ortc_getBalancer(p->url, &url)<0){ p->callbackGet(p->context, p->channel, url, NULL); free(url); url = NULL; } } else { url = p->url; } appKey = p->appKey; authToken = p->authToken; } else { url = p->context->server; appKey = p->context->appKey; authToken = p->context->authToken; } if(url){ int ret = _ortc_presenceRest(url, appKey, authToken, p->channel, &response); if(ret < 1){ switch(ret){ case -3: p->callbackGet(p->context, p->channel, "malloc() failed!", NULL); break; case -2: p->callbackGet(p->context, p->channel, "Can not init curl!", NULL); break; case -1: p->callbackGet(p->context, p->channel, "Can not connect to server!", NULL); break; case 0: p->callbackGet(p->context, p->channel, response, NULL); free(response); break; } } else { ortc_presenceData *presence = _ortc_parsePresence(response); if(presence == NULL) p->callbackGet(p->context, p->channel, "Error parsing a server response", NULL); else { p->callbackGet(p->context, p->channel, NULL, presence); _ortc_freePresence(presence); } free(response); } } free(p); pthread_detach(pthread_self()); return 0; }