void ServerMethods::connect (const Json::Value ¶ms, Json::Value &response) { std::string sessionId; if (params == Json::Value::null) { sessionId = generateUUID (); } else { bool doKeepAlive = false; doKeepAlive = getOrCreateSessionId (sessionId, params); if (doKeepAlive) { try { keepAliveSession (sessionId); } catch (KurentoException &ex) { Json::Value data; data[TYPE] = ex.getType(); throw JsonRpc::CallException (ex.getCode (), ex.getMessage (), data); } } } response[SESSION_ID] = sessionId; response["serverId"] = instanceId; }
void MediaSet::ref (const std::string &sessionId, std::shared_ptr<MediaObjectImpl> mediaObject) { std::unique_lock <std::recursive_mutex> lock (recMutex); if (objectsMap.find (mediaObject->getId() ) == objectsMap.end() ) { throw KurentoException (MEDIA_OBJECT_NOT_FOUND, "Cannot register media object, it was not created by MediaSet"); } keepAliveSession (sessionId, true); if (mediaObject->getParent() ) { ref (sessionId, std::dynamic_pointer_cast<MediaObjectImpl> (mediaObject->getParent() ) ); } sessionMap[sessionId][mediaObject->getId()] = mediaObject; reverseSessionMap[mediaObject->getId()].insert (sessionId); }
void MediaSet::keepAliveSession (const std::string &sessionId) { keepAliveSession (sessionId, false); }