reSIProcate/DialogUsageManager  9694
Profile.hxx
Go to the documentation of this file.
00001 #if !defined(RESIP_PROFILE_HXX)
00002 #define RESIP_PROFILE_HXX
00003 
00004 #include <iosfwd>
00005 #include <set>
00006 #include "resip/stack/Headers.hxx"
00007 #include "resip/stack/MethodTypes.hxx"
00008 #include "rutil/SharedPtr.hxx"
00009 #include "resip/stack/MessageDecorator.hxx"
00010 
00011 namespace resip
00012 {
00013 
00014 class Data;
00015 
00016 class Profile
00017 {
00018    public:        
00019       Profile();  // Default to no base profile
00020       Profile(SharedPtr<Profile> baseProfile);
00021       virtual ~Profile();
00022 
00028       virtual void reset();  
00029 
00038 
00040       virtual void setDefaultRegistrationTime(UInt32 secs);
00041       virtual UInt32 getDefaultRegistrationTime() const;
00042       virtual void unsetDefaultRegistrationTime();  
00043 
00046       virtual void setDefaultMaxRegistrationTime(UInt32 secs);
00047       virtual UInt32 getDefaultMaxRegistrationTime() const;
00048       virtual void unsetDefaultMaxRegistrationTime();   
00049 
00053       virtual void setDefaultRegistrationRetryTime(int secs);
00054       virtual int getDefaultRegistrationRetryTime() const;
00055       virtual void unsetDefaultRegistrationRetryTime();   
00056 
00058       virtual void setDefaultSubscriptionTime(UInt32 secs);
00059       virtual UInt32 getDefaultSubscriptionTime() const;
00060       virtual void unsetDefaultSubscriptionTime();   
00061 
00063       virtual void setDefaultPublicationTime(UInt32 secs);
00064       virtual UInt32 getDefaultPublicationTime() const;
00065       virtual void unsetDefaultPublicationTime();  
00066 
00068       virtual void setDefaultStaleCallTime(int secs);
00069       virtual int getDefaultStaleCallTime() const;
00070       virtual void unsetDefaultStaleCallTime();  
00071 
00073       virtual void setDefaultStaleReInviteTime(int secs);
00074       virtual int getDefaultStaleReInviteTime() const;
00075       virtual void unsetDefaultStaleReInviteTime();  
00076 
00079       virtual void setDefaultSessionTime(UInt32 secs); 
00080       virtual UInt32 getDefaultSessionTime() const;
00081       virtual void unsetDefaultSessionTime(); 
00082 
00093       typedef enum
00094       {
00095          PreferLocalRefreshes,
00096          PreferRemoteRefreshes,
00097          PreferCallerRefreshes,
00098          PreferCalleeRefreshes
00099       } SessionTimerMode;
00100       virtual void setDefaultSessionTimerMode(Profile::SessionTimerMode mode);
00101       virtual Profile::SessionTimerMode getDefaultSessionTimerMode() const;
00102       virtual void unsetDefaultSessionTimerMode();   
00103 
00105       virtual void set1xxRetransmissionTime(int secs);
00106       virtual int get1xxRetransmissionTime() const;
00107       virtual void unset1xxRetransmissionTime();   
00108 
00114       virtual void setOverrideHostAndPort(const Uri& hostPort);
00115       virtual bool hasOverrideHostAndPort() const;
00116       virtual const Uri& getOverrideHostAndPort() const;      
00117       virtual void unsetOverrideHostAndPort(); 
00118       
00124       virtual void addAdvertisedCapability(const Headers::Type header);
00125       virtual bool isAdvertisedCapability(const Headers::Type header) const;
00126       virtual void clearAdvertisedCapabilities(); 
00127       virtual void unsetAdvertisedCapabilities();
00128       
00130       virtual void setOutboundProxy( const Uri& uri );
00131       virtual const NameAddr& getOutboundProxy() const;
00132       virtual bool hasOutboundProxy() const;
00133       virtual void unsetOutboundProxy(); 
00134 
00141       virtual void setForceOutboundProxyOnAllRequestsEnabled(bool enabled) ;
00142       virtual bool getForceOutboundProxyOnAllRequestsEnabled() const;
00143       virtual void unsetForceOutboundProxyOnAllRequestsEnabled();
00144 
00146       virtual void setExpressOutboundAsRouteSetEnabled(bool enabled) ;
00147       virtual bool getExpressOutboundAsRouteSetEnabled() const;
00148       virtual void unsetExpressOutboundAsRouteSetEnabled();
00149 
00151       virtual void setRportEnabled(bool enabled);
00152       virtual bool getRportEnabled() const;      
00153       virtual void unsetRportEnabled(); 
00154 
00156       virtual void setUserAgent( const Data& userAgent );
00157       virtual const Data& getUserAgent() const;
00158       virtual bool hasUserAgent() const;
00159       virtual void unsetUserAgent(); 
00160 
00162       virtual void setProxyRequires( const Tokens& proxyRequires );
00163       virtual const Tokens& getProxyRequires() const;
00164       virtual bool hasProxyRequires() const;
00165       virtual void unsetProxyRequires(); 
00166 
00170       virtual void setKeepAliveTimeForDatagram(int keepAliveTime);
00171       virtual int getKeepAliveTimeForDatagram() const;
00172       virtual void unsetKeepAliveTimeForDatagram();
00173       virtual void setKeepAliveTimeForStream(int keepAliveTime);
00174       virtual int getKeepAliveTimeForStream() const;
00175       virtual void unsetKeepAliveTimeForStream();
00176 
00184       virtual void setFixedTransportPort(int fixedTransportPort);
00185       virtual int getFixedTransportPort() const;
00186       virtual void unsetFixedTransportPort(); 
00187 
00191       virtual void setFixedTransportInterface(const Data& fixedTransportInterface);
00192       virtual const Data& getFixedTransportInterface() const;
00193       virtual void unsetFixedTransportInterface(); 
00194 
00197       virtual void setRinstanceEnabled(bool enabled);
00198       virtual bool getRinstanceEnabled() const;
00199       virtual void unsetRinstanceEnabled();
00200 
00201       //If set then dum will add this MessageDecorator to all outbound messages
00202       virtual void setOutboundDecorator(SharedPtr<MessageDecorator> outboundDecorator);
00203       virtual SharedPtr<MessageDecorator> getOutboundDecorator();
00204       virtual void unsetOutboundDecorator();
00205 
00207       virtual void setMethodsParamEnabled(bool enabled) ;
00208       virtual bool getMethodsParamEnabled() const;
00209       virtual void unsetMethodsParamEnabled();
00210 
00223       virtual void setUserAgentCapabilities(const NameAddr& capabilities) ;
00224       virtual bool hasUserAgentCapabilities() const;
00225       virtual const NameAddr& getUserAgentCapabilities() const;
00226       virtual void unsetUserAgentCapabilities();
00227 
00230       virtual void setExtraHeadersInReferNotifySipFragEnabled(bool enabled) ;
00231       virtual bool getExtraHeadersInReferNotifySipFragEnabled() const;
00232       virtual void unsetExtraHeadersInReferNotifySipFragEnabled();
00233 
00234    private:
00235       bool mHasDefaultRegistrationExpires;
00236       UInt32 mDefaultRegistrationExpires;
00237       
00238       bool mHasDefaultMaxRegistrationExpires;
00239       UInt32 mDefaultMaxRegistrationExpires;
00240 
00241       bool mHasDefaultRegistrationRetryInterval;
00242       int  mDefaultRegistrationRetryInterval;
00243 
00244       bool mHasDefaultSubscriptionExpires;
00245       UInt32 mDefaultSubscriptionExpires;
00246 
00247       bool mHasDefaultPublicationExpires;
00248       UInt32 mDefaultPublicationExpires;
00249 
00250       bool mHasDefaultStaleCallTime;
00251       int mDefaultStaleCallTime;
00252 
00253       bool mHasDefaultStaleReInviteTime;
00254       int mDefaultStaleReInviteTime;
00255 
00256       bool mHasDefaultSessionExpires;
00257       UInt32 mDefaultSessionExpires;
00258 
00259       bool mHasDefaultSessionTimerMode;
00260       SessionTimerMode mDefaultSessionTimerMode;
00261 
00262       bool mHas1xxRetransmissionTime;
00263       int m1xxRetransmissionTime;
00264 
00265       bool mHasOutboundProxy;
00266       NameAddr mOutboundProxy;
00267       
00268       bool mHasForceOutboundProxyOnAllRequestsEnabled;
00269       bool mForceOutboundProxyOnAllRequestsEnabled;
00270 
00271       bool mHasExpressOutboundAsRouteSetEnabled;
00272       bool mExpressOutboundAsRouteSetEnabled;
00273 
00274       bool mHasAdvertisedCapabilities;
00275       std::set<Headers::Type> mAdvertisedCapabilities;
00276       
00277       bool mHasRportEnabled;
00278       bool mRportEnabled;
00279       
00280       bool mHasUserAgent;            
00281       Data mUserAgent;
00282       
00283       bool mHasOverrideHostPort;
00284       Uri  mOverrideHostPort;
00285       
00286       bool mHasKeepAliveTimeForDatagram;
00287       int  mKeepAliveTimeForDatagram;
00288 
00289       bool mHasKeepAliveTimeForStream;
00290       int  mKeepAliveTimeForStream;
00291 
00292       bool mHasFixedTransportPort;
00293       int  mFixedTransportPort;
00294       
00295       bool mHasFixedTransportInterface;
00296       Data mFixedTransportInterface;
00297 
00298       bool mHasProxyRequires;
00299       Tokens mProxyRequires;
00300 
00301       bool mHasRinstanceEnabled;
00302       bool mRinstanceEnabled;
00303       
00304       bool mHasOutboundDecorator;
00305       SharedPtr<MessageDecorator> mOutboundDecorator;
00306       
00307       bool mHasMethodsParamEnabled;
00308       bool mMethodsParamEnabled;
00309 
00310       bool mHasUserAgentCapabilities;
00311       NameAddr mUserAgentCapabilities;
00312 
00313       bool mHasExtraHeadersInReferNotifySipFragEnabled;
00314       bool mExtraHeadersInReferNotifySipFragEnabled;
00315 
00316       SharedPtr<Profile> mBaseProfile;  // All non-set settings will fall through to this Profile (if set)
00317 };
00318 
00319 }
00320 
00321 #endif
00322 
00323 /* ====================================================================
00324  * The Vovida Software License, Version 1.0 
00325  * 
00326  * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved.
00327  * 
00328  * Redistribution and use in source and binary forms, with or without
00329  * modification, are permitted provided that the following conditions
00330  * are met:
00331  * 
00332  * 1. Redistributions of source code must retain the above copyright
00333  *    notice, this list of conditions and the following disclaimer.
00334  * 
00335  * 2. Redistributions in binary form must reproduce the above copyright
00336  *    notice, this list of conditions and the following disclaimer in
00337  *    the documentation and/or other materials provided with the
00338  *    distribution.
00339  * 
00340  * 3. The names "VOCAL", "Vovida Open Communication Application Library",
00341  *    and "Vovida Open Communication Application Library (VOCAL)" must
00342  *    not be used to endorse or promote products derived from this
00343  *    software without prior written permission. For written
00344  *    permission, please contact vocal@vovida.org.
00345  *
00346  * 4. Products derived from this software may not be called "VOCAL", nor
00347  *    may "VOCAL" appear in their name, without prior written
00348  *    permission of Vovida Networks, Inc.
00349  * 
00350  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
00351  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00352  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
00353  * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA
00354  * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
00355  * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
00356  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00357  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00358  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
00359  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00360  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
00361  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
00362  * DAMAGE.
00363  * 
00364  * ====================================================================
00365  * 
00366  * This software consists of voluntary contributions made by Vovida
00367  * Networks, Inc. and many individuals on behalf of Vovida Networks,
00368  * Inc.  For more information on Vovida Networks, Inc., please see
00369  * <http://www.vovida.org/>.
00370  *
00371  */