xmlrpc_value* AddConferenceToken(xmlrpc_env *env, xmlrpc_value *param_array, void *user_data) { UTF8Parser parser; MCU *mcu = (MCU *)user_data; MultiConf *conf = NULL; //Parseamos int confId; char *str; xmlrpc_parse_value(env, param_array, "(is)", &confId, &str); //Comprobamos si ha habido error if(env->fault_occurred) xmlerror(env,"Fault occurred\n"); //Parse string parser.Parse((BYTE*)str,strlen(str)); //Obtenemos la referencia if(!mcu->GetConferenceRef(confId,&conf)) return xmlerror(env,"Conference does not exist"); //La borramos bool res = conf->AddBroadcastToken(parser.GetWString()); //Liberamos la referencia mcu->ReleaseConferenceRef(confId); //Salimos if(!res) return xmlerror(env,"Could not add pin to broadcast session\n"); //Devolvemos el resultado return xmlok(env); }
xmlrpc_value* MediaGatewaySetMediaBridgeOutputToken(xmlrpc_env *env, xmlrpc_value *param_array, void *user_data) { UTF8Parser parser; MediaGateway *mediaGateway = (MediaGateway *)user_data; //Parseamos int sessionId; char *str; xmlrpc_parse_value(env, param_array, "(is)", &sessionId, &str); //Comprobamos si ha habido error if(env->fault_occurred) return 0; //Parse string parser.Parse((BYTE*)str,strlen(str)); //La borramos bool res = mediaGateway->SetMediaBridgeOutputToken(sessionId,parser.GetWString()); //Salimos if(!res) return xmlerror(env,"Could not set output token to bridge session\n"); //Devolvemos el resultado return xmlok(env); }
//CreateConference xmlrpc_value* CreateConference(xmlrpc_env *env, xmlrpc_value *param_array, void *user_data) { MCU *mcu = (MCU *)user_data; MultiConf *conf = NULL; UTF8Parser tagParser; //Parseamos char *str; int queueId = 0; xmlrpc_parse_value(env, param_array, "(si)", &str, &queueId); //Comprobamos si ha habido error if(env->fault_occurred) { //Try with old parameters xmlrpc_parse_value(env, param_array, "(s)", &str); //Comprobamos si ha habido error if(env->fault_occurred) //Send errro xmlerror(env,"Fault occurred\n"); } //Parse string tagParser.Parse((BYTE*)str,strlen(str)); //Creamos la conferencia int confId = mcu->CreateConference(tagParser.GetWString(),queueId); //Si error if (!confId>0) return xmlerror(env,"No se puede crear la conferencia"); //Obtenemos la referencia if(!mcu->GetConferenceRef(confId,&conf)) return xmlerror(env,"Conferencia borrada antes de poder iniciarse\n"); //La iniciamos int res = conf->Init(); //Liberamos la referencia mcu->ReleaseConferenceRef(confId); //Salimos if(!res) return xmlerror(env,"No se ha podido iniciar la conferencia\n"); //Devolvemos el resultado return xmlok(env,xmlrpc_build_value(env,"(i)",confId)); }
int MultiConf::StartPublishing(const char* server,int port, const char* app,const char* stream) { PublisherInfo info; UTF8Parser parser; //Parse stream name parser.SetString(stream); //LOg Log(">StartPublishing broadcast to [url=\"rtmp://%s:%d/%s\",stream=\"%ls\"\n",server,port,app,parser.GetWChar()); //Pa porsi if (!inited) //Exit return Error("Multiconf not initied"); //Get published id info.id = maxPublisherId++; //Store published stream name info.name = parser.GetWString(); //Create new publisherf1722 info.conn = new RTMPClientConnection(tag); //Store id as user data info.conn->SetUserData(info.id); //No stream info.stream = NULL; //Add to map publishers[info.id] = info; //Connect info.conn->Connect(server,port,app,this); Log("<StartPublishing broadcast [id%d]\n",info.id); //Return id return info.id; }
xmlrpc_value* CreateParticipant(xmlrpc_env *env, xmlrpc_value *param_array, void *user_data) { MCU *mcu = (MCU *)user_data; MultiConf *conf = NULL; UTF8Parser parser; //Parseamos int confId; int mosaicId; char *name; int type; xmlrpc_parse_value(env, param_array, "(iisi)", &confId,&mosaicId,&name,&type); //Comprobamos si ha habido error if(env->fault_occurred) xmlerror(env,"Fault occurred\n"); //Obtenemos la referencia if(!mcu->GetConferenceRef(confId,&conf)) return xmlerror(env,"Conference does not exist"); //Parse string parser.Parse((BYTE*)name,strlen(name)); //La borramos int partId = conf->CreateParticipant(mosaicId,parser.GetWString(),(Participant::Type)type); //Liberamos la referencia mcu->ReleaseConferenceRef(confId); //Salimos if(!partId) return xmlerror(env,"No se ha podido a�adir el participante a la conferencia\n"); //Devolvemos el resultado return xmlok(env,xmlrpc_build_value(env,"(i)",partId)); }
xmlrpc_value* MediaGatewayCreateMediaBridge(xmlrpc_env *env, xmlrpc_value *param_array, void *user_data) { UTF8Parser nameParser; MediaGateway *mediaGateway = (MediaGateway *)user_data; MediaBridgeSession *session = NULL; //Parseamos char *str; xmlrpc_parse_value(env, param_array, "(s)", &str); //Parse string nameParser.Parse((BYTE*)str,strlen(str)); //Creamos la sessionerencia int sessionId = mediaGateway->CreateMediaBridge(nameParser.GetWString()); //Obtenemos la referencia if(!mediaGateway->GetMediaBridgeRef(sessionId,&session)) return xmlerror(env,"Session deleted before inited\n"); //Si error if (!sessionId>0) return xmlerror(env,"Could not create session"); //La iniciamos bool res = session->Init(); //Liberamos la referencia mediaGateway->ReleaseMediaBridgeRef(sessionId); //Salimos if(!res) return xmlerror(env,"Could not start bridge\n"); //Devolvemos el resultado return xmlok(env,xmlrpc_build_value(env,"(i)",sessionId)); }
xmlrpc_value* CreatePlayer(xmlrpc_env *env, xmlrpc_value *param_array, void *user_data) { MCU *mcu = (MCU *)user_data; MultiConf *conf = NULL; UTF8Parser parser; //Parseamos int confId; int privateId; char *name; xmlrpc_parse_value(env, param_array, "(iis)", &confId,&privateId,&name); //Comprobamos si ha habido error if(env->fault_occurred) xmlerror(env,"Fault occurred\n"); //Obtenemos la referencia if(!mcu->GetConferenceRef(confId,&conf)) return xmlerror(env,"Conference does not exist"); //Parse string parser.Parse((BYTE*)name,strlen(name)); //La borramos int playerId = conf->CreatePlayer(privateId,parser.GetWString()); //Liberamos la referencia mcu->ReleaseConferenceRef(confId); //Salimos if(!playerId) return xmlerror(env,"Could not create player in conference\n"); //Devolvemos el resultado return xmlok(env,xmlrpc_build_value(env,"(i)",playerId)); }