Package com.kurento.kmf.connector

Source Code of com.kurento.kmf.connector.SubscriptionsManager

package com.kurento.kmf.connector;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import com.kurento.kmf.jsonrpcconnector.Session;

public class SubscriptionsManager {

  private final ConcurrentMap<String, Session> sessionsBySubsId = new ConcurrentHashMap<>();

  private final Multimap<String, Session> sessionsByObjAndType = Multimaps
      .synchronizedSetMultimap(HashMultimap.<String, Session> create());

  public void removeSession(Session session) {
    removeSessionFromIterator(sessionsByObjAndType.entries().iterator(),
        session);
    removeSessionFromIterator(sessionsBySubsId.entrySet().iterator(),
        session);
  }

  private void removeSessionFromIterator(Iterator<Entry<String, Session>> it,
      Session session) {
    while (it.hasNext()) {
      Entry<String, Session> value = it.next();
      if (value.getValue() == session) {
        it.remove();
      }
    }
  }

  public void addSubscription(String subscriptionId, String objectAndType,
      Session session) {

    sessionsBySubsId.put(subscriptionId, session);
    sessionsByObjAndType.put(objectAndType, session);
  }

  public Collection<Session> getSessionsByObjAndType(String objectAndType) {
    return sessionsByObjAndType.get(objectAndType);
  }

  public Collection<Session> getSessionsBySubscription(String subscriptionId) {
    Session session = sessionsBySubsId.get(subscriptionId);
    if (session == null) {
      return Collections.emptyList();
    } else {
      return Arrays.asList(session);
    }
  }
}
TOP

Related Classes of com.kurento.kmf.connector.SubscriptionsManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.