Ejemplo n.º 1
0
void
ServerMethods::connect (const Json::Value &params, 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;
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
void
MediaSet::keepAliveSession (const std::string &sessionId)
{
  keepAliveSession (sessionId, false);
}