package org.mobicents.media.server.ctrl.rtsp;
import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import org.mobicents.media.server.spi.Connection;
/**
*
* @author amit bhayani
*
*/
public class Session {
private static int GEN = 1;
private String id;
private RtspController rtspController;
private SessionState state = SessionState.INIT;
private ConcurrentHashMap<String, ConnectionActivity> connections = new ConcurrentHashMap<String, ConnectionActivity>();
protected Session(RtspController rtspController) {
this.rtspController = rtspController;
this.id = Integer.toHexString(GEN++);
if (GEN == Integer.MAX_VALUE) {
GEN = 1;
}
}
protected String getId() {
return this.id;
}
protected SessionState getState() {
return state;
}
protected void setState(SessionState state) {
this.state = state;
}
public ConnectionActivity addConnection(Connection connection) {
ConnectionActivity l = new ConnectionActivity(this, connection);
connections.put(l.getID(), l);
return l;
}
public void removeConnection(String connectionID) {
ConnectionActivity l = connections.remove(connectionID);
if (l == null) {
//Some cleaning?
}
//l.close();
if (connections.isEmpty()) {
rtspController.removeSession(this.id);
}
}
public Collection<ConnectionActivity> getActivities() {
return connections.values();
}
}