/*
* @(#)SessionDescription.java 1.8 02/08/21
*
* Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved.
*/
package com.sun.media.sdp;
import java.io.*;
import java.util.*;
public class SessionDescription extends Parser {
public Vector timeDescriptions;
public Vector sessionAttributes;
public boolean connectionIncluded;
// Values:
public String version;
public String origin;
public String sessionName;
public String sessionInfo;
public String uri;
public String email;
public String phone;
public String connectionInfo;
public String bandwidthInfo;
public String timezoneAdjustment;
public String encryptionKey;
public SessionDescription(ByteArrayInputStream bin) {
connectionIncluded = false;
// Protocol Version:
version = getLine(bin);
// Origin:
if (getToken(bin, "o=", true)) {
origin = getLine(bin);
// System.out.println( "origin: " + origin);
}
// Session Name:
if (getToken(bin, "s=", true)) {
sessionName = getLine(bin);
// System.out.println( "session name: " + sessionName);
}
// Session and Media Information:
if (getToken(bin, "i=", false)) {
sessionInfo = getLine(bin);
// System.out.println( "session info: " + sessionInfo);
}
// URI:
if (getToken(bin, "u=", false)) {
uri = getLine(bin);
// System.out.println( "uri: " + uri);
}
// E-Mail:
if (getToken(bin, "e=", false)) {
email = getLine(bin);
// System.out.println( "email: " + email);
}
// Try a second E-Mail (Bug in PRISS protocol):
if (getToken(bin, "e=", false)) {
email = getLine(bin);
// System.out.println( "email: " + email);
}
// phone number:
if (getToken(bin, "p=", false)) {
phone = getLine(bin);
// System.out.println( "phone: " + phone);
}
// connection information:
if (getToken(bin, "c=", false)) {
connectionIncluded = true;
connectionInfo = getLine(bin);
// System.out.println( "connection info: " + connectionInfo);
}
// bandwidth information:
if (getToken(bin, "b=", false)) {
bandwidthInfo = getLine(bin);
System.out.println("bandwidth info: " + bandwidthInfo);
}
// time description:
timeDescriptions = new Vector();
boolean found = getToken(bin, "t=", true);
while (found) {
TimeDescription timeDescription = new TimeDescription(bin);
timeDescriptions.addElement(timeDescription);
found = getToken(bin, "t=", false);
}
// time zone adjustments:
if (getToken(bin, "z=", false)) {
timezoneAdjustment = getLine(bin);
// System.out.println( "timezone adjustment: " + timezoneAdjustment);
}
// encryption key:
if (getToken(bin, "k=", false)) {
encryptionKey = getLine(bin);
// System.out.println( "encryption key: " + encryptionKey);
}
// session attributes:
sessionAttributes = new Vector();
found = getToken(bin, "a=", false);
while (found) {
String sessionAttribute = getLine(bin);
// System.out.println( "session attribute: " + sessionAttribute);
int index = sessionAttribute.indexOf(':');
if (index > 0) {
String name = sessionAttribute.substring(0, index);
String value = sessionAttribute.substring(index + 1);
MediaAttribute attribute = new MediaAttribute(name, value);
sessionAttributes.addElement(attribute);
}
found = getToken(bin, "a=", false);
}
}
public MediaAttribute getSessionAttribute(String name) {
MediaAttribute attribute = null;
if (sessionAttributes != null) {
for (int i = 0; i < sessionAttributes.size(); i++) {
MediaAttribute entry =
(MediaAttribute) sessionAttributes.elementAt(i);
if (entry.getName().equals(name)) {
attribute = entry;
break;
}
}
}
return attribute;
}
}
|