/* This file is part of Peers, a java SIP softphone. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Copyright 2007, 2008, 2009, 2010 Yohann Martineau */ package peers.sdp; import lombok.Getter; import lombok.Setter; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; import java.util.Hashtable; import java.util.List; @Getter @Setter public class SessionDescription { private long id; private long version; private String name; private String username; private InetAddress ipAddress; private List mediaDescriptions; private Hashtable attributes; @Override public String toString() { StringBuilder buf = new StringBuilder(); buf.append("v=0\r\n"); buf.append("o=").append(username).append(" ").append(id); buf.append(" ").append(version); int ipVersion; if (ipAddress instanceof Inet4Address) { ipVersion = 4; } else if (ipAddress instanceof Inet6Address) { ipVersion = 6; } else { throw new RuntimeException("unknown ip version: " + ipAddress); } buf.append(" IN IP").append(ipVersion).append(" "); String hostAddress = ipAddress.getHostAddress(); buf.append(hostAddress).append("\r\n"); buf.append("s=").append(name).append("\r\n"); buf.append("c=IN IP").append(ipVersion).append(" "); buf.append(hostAddress).append("\r\n"); buf.append("t=0 0\r\n"); for (String attributeName: attributes.keySet()) { String attributeValue = attributes.get(attributeName); buf.append("a=").append(attributeName); if (attributeValue != null && !attributeValue.trim().isEmpty()) { buf.append(":"); buf.append(attributeValue); buf.append("\r\n"); } } for (MediaDescription mediaDescription: mediaDescriptions) { buf.append(mediaDescription.toString()); } return buf.toString(); } }