/* * Copyright (C) 2005 Luca Veltri - University of Parma - Italy * * This file is part of MjSip (http://www.mjsip.org) * * MjSip 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 2 of the License, or * (at your option) any later version. * * MjSip 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 MjSip; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Author(s): * Luca Veltri (luca.veltri@unipr.it) */ package org.zoolu.sip.header; import org.zoolu.sip.provider.SipParser; import org.zoolu.tools.Parser; import java.util.Date; /** SIP Header Expires. * <p> Note: for backward compatibility with legacy implementations * the date format is still supported * although it has been deprecated in RFC 3261. */ public class ExpiresHeader extends SipDateHeader { //public ExpiresHeader() //{ super(SipHeaders.Expires); //} public ExpiresHeader(String hvalue) { super(SipHeaders.Expires,hvalue); } /** Creates a new ExpiresHeader based on a Date value. */ public ExpiresHeader(Date date) { super(SipHeaders.Expires,date); } /** Creates a new ExpiresHeader with delta-seconds as value. */ public ExpiresHeader(int seconds) { super(SipHeaders.Expires,(String)null); value=String.valueOf(seconds); } public ExpiresHeader(Header hd) { super(hd); } /** Gets boolean value to indicate if expiry value of ExpiresHeader is in date format. */ public boolean isDate() { if (value.indexOf("GMT")>=0) return true; return false; } /** Gets value of ExpiresHeader as delta-seconds */ public int getDeltaSeconds() { int secs=-1; if (isDate()) { Date date=(new SipParser((new Parser(value)).getStringUnquoted())).getDate(); secs=(int)((date.getTime()-System.currentTimeMillis())/1000); if (secs<0) secs=0; } else secs=(new SipParser(value)).getInt(); return secs; } /** Gets value of ExpiresHeader as absolute date */ public Date getDate() { Date date=null; if (isDate()) { date=(new SipParser((new Parser(value)).getStringUnquoted())).getDate(); } else { long secs=getDeltaSeconds(); if (secs>=0) date=new Date(System.currentTimeMillis()+secs*1000); } return date; } /** Sets expires of ExpiresHeader as delta-seconds */ //public void setDeltaSeconds(long seconds) //{ value=String.valueOf(seconds); //} /** Gets value of ExpiresHeader */ /* public static void getExpires(ExpiresHeader eh) { if (eh.isDate()) eh.getDate(); else eh.getDeltaSeconds(); } */ }