reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
Profile.hxx
Go to the documentation of this file.
1#if !defined(RESIP_PROFILE_HXX)
2#define RESIP_PROFILE_HXX
3
4#include <iosfwd>
5#include <set>
9
10#include <memory>
11
12namespace resip
13{
14
15class Data;
16
18{
19 public:
20 Profile(); // Default to no base profile
21 explicit Profile(std::shared_ptr<Profile> baseProfile);
22 Profile(const Profile&) = default;
23 Profile(Profile&&) = default;
24 virtual ~Profile() = default;
25
26 Profile& operator=(const Profile&) = default;
27 Profile& operator=(Profile&&) = default;
28
34 virtual void reset();
35
44
46 virtual void setDefaultRegistrationTime(uint32_t secs) noexcept;
47 virtual uint32_t getDefaultRegistrationTime() const noexcept;
48 virtual void unsetDefaultRegistrationTime() noexcept;
49
52 virtual void setDefaultMaxRegistrationTime(uint32_t secs) noexcept;
53 virtual uint32_t getDefaultMaxRegistrationTime() const noexcept;
54 virtual void unsetDefaultMaxRegistrationTime() noexcept;
55
59 virtual void setDefaultRegistrationRetryTime(int secs) noexcept;
60 virtual int getDefaultRegistrationRetryTime() const noexcept;
61 virtual void unsetDefaultRegistrationRetryTime() noexcept;
62
64 virtual void setDefaultSubscriptionTime(uint32_t secs) noexcept;
65 virtual uint32_t getDefaultSubscriptionTime() const noexcept;
66 virtual void unsetDefaultSubscriptionTime() noexcept;
67
69 virtual void setDefaultPublicationTime(uint32_t secs) noexcept;
70 virtual uint32_t getDefaultPublicationTime() const noexcept;
71 virtual void unsetDefaultPublicationTime() noexcept;
72
74 virtual void setDefaultStaleCallTime(int secs) noexcept;
75 virtual int getDefaultStaleCallTime() const noexcept;
76 virtual void unsetDefaultStaleCallTime() noexcept;
77
79 virtual void setDefaultStaleReInviteTime(int secs) noexcept;
80 virtual int getDefaultStaleReInviteTime() const noexcept;
81 virtual void unsetDefaultStaleReInviteTime() noexcept;
82
85 virtual void setDefaultSessionTime(uint32_t secs) noexcept;
86 virtual uint32_t getDefaultSessionTime() const noexcept;
87 virtual void unsetDefaultSessionTime() noexcept;
88
106 virtual void setDefaultSessionTimerMode(Profile::SessionTimerMode mode) noexcept;
108 virtual void unsetDefaultSessionTimerMode() noexcept;
109
111 virtual void set1xxRetransmissionTime(int secs) noexcept;
112 virtual int get1xxRetransmissionTime() const noexcept;
113 virtual void unset1xxRetransmissionTime() noexcept;
114
116 virtual void set1xxRelResubmitTime(int secs) noexcept;
117 virtual int get1xxRelResubmitTime() const noexcept;
118 virtual void unset1xxRelResubmitTime() noexcept;
119
125 virtual void setOverrideHostAndPort(const Uri& hostPort);
126 virtual bool hasOverrideHostAndPort() const noexcept;
127 virtual const Uri& getOverrideHostAndPort() const;
128 virtual void unsetOverrideHostAndPort() noexcept;
129
135 virtual void addAdvertisedCapability(Headers::Type header);
136 virtual bool isAdvertisedCapability(Headers::Type header) const;
137 virtual void clearAdvertisedCapabilities() noexcept;
138 virtual void unsetAdvertisedCapabilities();
139
141 virtual void setOutboundProxy( const Uri& uri );
142 virtual const NameAddr& getOutboundProxy() const;
143 virtual bool hasOutboundProxy() const noexcept;
144 virtual void unsetOutboundProxy() noexcept;
145
152 virtual void setForceOutboundProxyOnAllRequestsEnabled(bool enabled) noexcept;
153 virtual bool getForceOutboundProxyOnAllRequestsEnabled() const noexcept;
154 virtual void unsetForceOutboundProxyOnAllRequestsEnabled() noexcept;
155
157 virtual void setExpressOutboundAsRouteSetEnabled(bool enabled) noexcept;
158 virtual bool getExpressOutboundAsRouteSetEnabled() const noexcept;
159 virtual void unsetExpressOutboundAsRouteSetEnabled() noexcept;
160
162 virtual void setRportEnabled(bool enabled) noexcept;
163 virtual bool getRportEnabled() const noexcept;
164 virtual void unsetRportEnabled() noexcept;
165
167 virtual void setUserAgent( const Data& userAgent );
168 virtual const Data& getUserAgent() const;
169 virtual bool hasUserAgent() const noexcept;
170 virtual void unsetUserAgent() noexcept;
171
173 virtual void setProxyRequires( const Tokens& proxyRequires );
174 virtual const Tokens& getProxyRequires() const;
175 virtual bool hasProxyRequires() const noexcept;
176 virtual void unsetProxyRequires() noexcept;
177
181 virtual void setKeepAliveTimeForDatagram(int keepAliveTime) noexcept;
182 virtual int getKeepAliveTimeForDatagram() const noexcept;
183 virtual void unsetKeepAliveTimeForDatagram() noexcept;
184 virtual void setKeepAliveTimeForStream(int keepAliveTime) noexcept;
185 virtual int getKeepAliveTimeForStream() const noexcept;
186 virtual void unsetKeepAliveTimeForStream() noexcept;
187
195 virtual void setFixedTransportPort(int fixedTransportPort) noexcept;
196 virtual int getFixedTransportPort() const noexcept;
197 virtual void unsetFixedTransportPort() noexcept;
198
202 virtual void setFixedTransportInterface(const Data& fixedTransportInterface);
203 virtual const Data& getFixedTransportInterface() const;
204 virtual void unsetFixedTransportInterface();
205
208 virtual void setRinstanceEnabled(bool enabled) noexcept;
209 virtual bool getRinstanceEnabled() const noexcept;
210 virtual void unsetRinstanceEnabled() noexcept;
211
212 //If set then dum will add this MessageDecorator to all outbound messages
213 virtual void setOutboundDecorator(std::shared_ptr<MessageDecorator> outboundDecorator) noexcept;
214 virtual std::shared_ptr<MessageDecorator> getOutboundDecorator() noexcept;
215 virtual void unsetOutboundDecorator() noexcept;
216
218 virtual void setMethodsParamEnabled(bool enabled) noexcept;
219 virtual bool getMethodsParamEnabled() const noexcept;
220 virtual void unsetMethodsParamEnabled() noexcept;
221
234 virtual void setUserAgentCapabilities(const NameAddr& capabilities) ;
235 virtual bool hasUserAgentCapabilities() const noexcept;
236 virtual const NameAddr& getUserAgentCapabilities() const;
237 virtual void unsetUserAgentCapabilities() noexcept;
238
241 virtual void setExtraHeadersInReferNotifySipFragEnabled(bool enabled) noexcept;
242 virtual bool getExtraHeadersInReferNotifySipFragEnabled() const noexcept;
243 virtual void unsetExtraHeadersInReferNotifySipFragEnabled() noexcept;
244
245 virtual void setHandleInviteSession491AsGeneralFailureEnabled(bool enabled);
248
249 private:
250 bool mHasDefaultRegistrationExpires;
251 uint32_t mDefaultRegistrationExpires;
252
253 bool mHasDefaultMaxRegistrationExpires;
254 uint32_t mDefaultMaxRegistrationExpires;
255
256 bool mHasDefaultRegistrationRetryInterval;
257 int mDefaultRegistrationRetryInterval;
258
259 bool mHasDefaultSubscriptionExpires;
260 uint32_t mDefaultSubscriptionExpires;
261
262 bool mHasDefaultPublicationExpires;
263 uint32_t mDefaultPublicationExpires;
264
265 bool mHasDefaultStaleCallTime;
266 int mDefaultStaleCallTime;
267
268 bool mHasDefaultStaleReInviteTime;
269 int mDefaultStaleReInviteTime;
270
271 bool mHasDefaultSessionExpires;
272 uint32_t mDefaultSessionExpires;
273
274 bool mHasDefaultSessionTimerMode;
275 SessionTimerMode mDefaultSessionTimerMode;
276
277 bool mHas1xxRetransmissionTime;
278 int m1xxRetransmissionTime;
279
280 bool mHas1xxRelResubmitTime;
281 int m1xxRelResubmitTime;
282
283 bool mHasOutboundProxy;
284 NameAddr mOutboundProxy;
285
286 bool mHasForceOutboundProxyOnAllRequestsEnabled;
287 bool mForceOutboundProxyOnAllRequestsEnabled;
288
289 bool mHasExpressOutboundAsRouteSetEnabled;
290 bool mExpressOutboundAsRouteSetEnabled;
291
292 bool mHasAdvertisedCapabilities;
293 std::set<Headers::Type> mAdvertisedCapabilities;
294
295 bool mHasRportEnabled;
296 bool mRportEnabled;
297
298 bool mHasUserAgent;
299 Data mUserAgent;
300
301 bool mHasOverrideHostPort;
302 Uri mOverrideHostPort;
303
304 bool mHasKeepAliveTimeForDatagram;
305 int mKeepAliveTimeForDatagram;
306
307 bool mHasKeepAliveTimeForStream;
308 int mKeepAliveTimeForStream;
309
310 bool mHasFixedTransportPort;
311 int mFixedTransportPort;
312
313 bool mHasFixedTransportInterface;
314 Data mFixedTransportInterface;
315
316 bool mHasProxyRequires;
317 Tokens mProxyRequires;
318
319 bool mHasRinstanceEnabled;
320 bool mRinstanceEnabled;
321
322 bool mHasOutboundDecorator;
323 std::shared_ptr<MessageDecorator> mOutboundDecorator;
324
325 bool mHasMethodsParamEnabled;
326 bool mMethodsParamEnabled;
327
328 bool mHasUserAgentCapabilities;
329 NameAddr mUserAgentCapabilities;
330
331 bool mHasExtraHeadersInReferNotifySipFragEnabled;
332 bool mExtraHeadersInReferNotifySipFragEnabled;
333
334 bool mHasHandleInviteSession491AsGeneralFailureEnabled;
335 bool mHandleInviteSession491AsGeneralFailureEnabled;
336
337 std::shared_ptr<Profile> mBaseProfile; // All non-set settings will fall through to this Profile (if set)
338};
339
340}
341
342#endif
343
344/* ====================================================================
345 * The Vovida Software License, Version 1.0
346 *
347 * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved.
348 *
349 * Redistribution and use in source and binary forms, with or without
350 * modification, are permitted provided that the following conditions
351 * are met:
352 *
353 * 1. Redistributions of source code must retain the above copyright
354 * notice, this list of conditions and the following disclaimer.
355 *
356 * 2. Redistributions in binary form must reproduce the above copyright
357 * notice, this list of conditions and the following disclaimer in
358 * the documentation and/or other materials provided with the
359 * distribution.
360 *
361 * 3. The names "VOCAL", "Vovida Open Communication Application Library",
362 * and "Vovida Open Communication Application Library (VOCAL)" must
363 * not be used to endorse or promote products derived from this
364 * software without prior written permission. For written
365 * permission, please contact vocal@vovida.org.
366 *
367 * 4. Products derived from this software may not be called "VOCAL", nor
368 * may "VOCAL" appear in their name, without prior written
369 * permission of Vovida Networks, Inc.
370 *
371 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
372 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
373 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
374 * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA
375 * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
376 * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
377 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
378 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
379 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
380 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
381 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
382 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
383 * DAMAGE.
384 *
385 * ====================================================================
386 *
387 * This software consists of voluntary contributions made by Vovida
388 * Networks, Inc. and many individuals on behalf of Vovida Networks,
389 * Inc. For more information on Vovida Networks, Inc., please see
390 * <http://www.vovida.org/>.
391 *
392 */
An alternative to std::string, encapsulates an arbitrary buffer of bytes.
Definition Data.hxx:90
Maps from header name to derived ParserCategory.
Represents the "name-addr" and the "addr-spec" elements in the RFC 3261 grammar.
Definition NameAddr.hxx:19
virtual void unsetAdvertisedCapabilities()
Definition Profile.cxx:479
virtual void unsetOutboundDecorator() noexcept
Definition Profile.cxx:884
virtual void set1xxRetransmissionTime(int secs) noexcept
The amount of time that can pass before dum will resubmit an unreliable provisional response.
Definition Profile.cxx:349
virtual void unsetDefaultPublicationTime() noexcept
Definition Profile.cxx:207
virtual void unsetKeepAliveTimeForStream() noexcept
Definition Profile.cxx:750
virtual void setDefaultSessionTime(uint32_t secs) noexcept
Only used if timer option tag is set in MasterProfile.
Definition Profile.cxx:285
virtual bool getMethodsParamEnabled() const noexcept
Definition Profile.cxx:902
Profile(Profile &&)=default
virtual void setFixedTransportInterface(const Data &fixedTransportInterface)
If set dum will provide a interface in the via for requests sent down to the stack.
Definition Profile.cxx:796
virtual void unsetDefaultRegistrationTime() noexcept
Definition Profile.cxx:79
virtual void setKeepAliveTimeForStream(int keepAliveTime) noexcept
Definition Profile.cxx:732
virtual void unsetKeepAliveTimeForDatagram() noexcept
Definition Profile.cxx:718
virtual int getKeepAliveTimeForStream() const noexcept
Definition Profile.cxx:739
virtual void unsetOutboundProxy() noexcept
Definition Profile.cxx:526
virtual void unsetDefaultRegistrationRetryTime() noexcept
Definition Profile.cxx:143
virtual void setDefaultPublicationTime(uint32_t secs) noexcept
This default is used if no value is passed in when creating a publication.
Definition Profile.cxx:189
virtual bool hasOverrideHostAndPort() const noexcept
Definition Profile.cxx:420
virtual void unsetDefaultSubscriptionTime() noexcept
Definition Profile.cxx:175
virtual void setUserAgent(const Data &userAgent)
if set then UserAgent header is added to outbound messages
Definition Profile.cxx:628
virtual void clearAdvertisedCapabilities() noexcept
Definition Profile.cxx:472
virtual void setDefaultSubscriptionTime(uint32_t secs) noexcept
This default is used if no value is passed in when creating a subscription.
Definition Profile.cxx:157
virtual void setDefaultStaleCallTime(int secs) noexcept
Call is stale if UAC gets no final response within the stale call timeout (default 3 minutes)
Definition Profile.cxx:221
virtual bool getHandleInviteSession491AsGeneralFailureEnabled() const
Definition Profile.cxx:1002
virtual ~Profile()=default
virtual void setForceOutboundProxyOnAllRequestsEnabled(bool enabled) noexcept
If enabled, forces use of outbound proxy on all requests, including mid-dialog requests.
Definition Profile.cxx:532
virtual void setDefaultRegistrationTime(uint32_t secs) noexcept
Note: setXXXX methods will set this setting internally in this object.
Definition Profile.cxx:61
virtual void setHandleInviteSession491AsGeneralFailureEnabled(bool enabled)
Definition Profile.cxx:995
virtual void unsetExpressOutboundAsRouteSetEnabled() noexcept
Definition Profile.cxx:582
virtual void setKeepAliveTimeForDatagram(int keepAliveTime) noexcept
time between CR/LF keepalive messages in seconds.
Definition Profile.cxx:700
virtual void unsetForceOutboundProxyOnAllRequestsEnabled() noexcept
Definition Profile.cxx:550
virtual void setDefaultRegistrationRetryTime(int secs) noexcept
The time to retry registrations on error responses (if Retry-After header is not present in error) Se...
Definition Profile.cxx:125
virtual void unsetHandleInviteSession491AsGeneralFailureEnabled()
Definition Profile.cxx:1013
virtual const NameAddr & getOutboundProxy() const
Definition Profile.cxx:503
virtual void setOverrideHostAndPort(const Uri &hostPort)
overrides the value used to populate the contact ?dcm? – also change via entries? Also,...
Definition Profile.cxx:413
virtual bool getExtraHeadersInReferNotifySipFragEnabled() const noexcept
Definition Profile.cxx:970
virtual void unsetUserAgent() noexcept
Definition Profile.cxx:658
virtual void setUserAgentCapabilities(const NameAddr &capabilities)
If set, the parameters on the provided NameAddr are used in the contact header Example: #include <res...
Definition Profile.cxx:927
virtual uint32_t getDefaultSessionTime() const noexcept
Definition Profile.cxx:292
virtual bool getForceOutboundProxyOnAllRequestsEnabled() const noexcept
Definition Profile.cxx:539
virtual int getKeepAliveTimeForDatagram() const noexcept
Definition Profile.cxx:707
virtual void unsetProxyRequires() noexcept
Definition Profile.cxx:694
virtual void unsetFixedTransportPort() noexcept
Definition Profile.cxx:782
virtual void setProxyRequires(const Tokens &proxyRequires)
if set then ProxyRequires header is added to outbound messages
Definition Profile.cxx:664
virtual const Data & getUserAgent() const
Definition Profile.cxx:635
virtual std::shared_ptr< MessageDecorator > getOutboundDecorator() noexcept
Definition Profile.cxx:873
virtual uint32_t getDefaultSubscriptionTime() const noexcept
Definition Profile.cxx:164
virtual int getDefaultStaleCallTime() const noexcept
Definition Profile.cxx:228
Profile(const Profile &)=default
Profile & operator=(const Profile &)=default
virtual void setOutboundDecorator(std::shared_ptr< MessageDecorator > outboundDecorator) noexcept
Definition Profile.cxx:866
virtual void reset()
Reset this profile to it's initial state - (same as calling unsetXXX for each setting) If no fall thr...
Definition Profile.cxx:27
virtual bool getRinstanceEnabled() const noexcept
Definition Profile.cxx:836
virtual const Tokens & getProxyRequires() const
Definition Profile.cxx:671
Profile & operator=(Profile &&)=default
virtual void unsetRinstanceEnabled() noexcept
Definition Profile.cxx:847
virtual void unsetExtraHeadersInReferNotifySipFragEnabled() noexcept
Definition Profile.cxx:981
virtual void setFixedTransportPort(int fixedTransportPort) noexcept
If set dum will provide a port in the via for requests sent down to the stack.
Definition Profile.cxx:764
virtual void setDefaultStaleReInviteTime(int secs) noexcept
ReInvite is stale if UAC gets no final response within the stale reinvite timeout (default 40 seconds...
Definition Profile.cxx:253
virtual void unsetUserAgentCapabilities() noexcept
Definition Profile.cxx:957
virtual const Uri & getOverrideHostAndPort() const
Definition Profile.cxx:431
virtual void addAdvertisedCapability(Headers::Type header)
enable/disable sending of Allow/Supported/Accept-Language/Accept-Encoding headers on initial outbound...
Definition Profile.cxx:448
virtual void unsetDefaultStaleCallTime() noexcept
Definition Profile.cxx:239
virtual void setExtraHeadersInReferNotifySipFragEnabled(bool enabled) noexcept
If enabled then dialog identifying headers are added to SipFrag bodies that are generated in an Invit...
Definition Profile.cxx:963
virtual void unsetOverrideHostAndPort() noexcept
Definition Profile.cxx:442
virtual int get1xxRetransmissionTime() const noexcept
Definition Profile.cxx:356
virtual bool hasUserAgent() const noexcept
Definition Profile.cxx:647
virtual void unsetDefaultSessionTimerMode() noexcept
Definition Profile.cxx:335
virtual int getFixedTransportPort() const noexcept
Definition Profile.cxx:771
virtual void setExpressOutboundAsRouteSetEnabled(bool enabled) noexcept
If enabled, add a route header for the outbound proxy.
Definition Profile.cxx:564
virtual int getDefaultStaleReInviteTime() const noexcept
Definition Profile.cxx:260
virtual void unsetDefaultStaleReInviteTime() noexcept
Definition Profile.cxx:271
virtual uint32_t getDefaultPublicationTime() const noexcept
Definition Profile.cxx:196
virtual void unset1xxRetransmissionTime() noexcept
Definition Profile.cxx:367
virtual bool hasProxyRequires() const noexcept
Definition Profile.cxx:683
virtual bool getExpressOutboundAsRouteSetEnabled() const noexcept
Definition Profile.cxx:571
virtual const Data & getFixedTransportInterface() const
Definition Profile.cxx:803
virtual void unsetFixedTransportInterface()
Definition Profile.cxx:814
virtual Profile::SessionTimerMode getDefaultSessionTimerMode() const noexcept
Definition Profile.cxx:324
virtual uint32_t getDefaultRegistrationTime() const noexcept
Definition Profile.cxx:68
virtual void set1xxRelResubmitTime(int secs) noexcept
The amount of time that can pass before dum will resubmit a reliable provisional response.
Definition Profile.cxx:381
virtual int get1xxRelResubmitTime() const noexcept
Definition Profile.cxx:388
virtual const NameAddr & getUserAgentCapabilities() const
Definition Profile.cxx:934
virtual void setRinstanceEnabled(bool enabled) noexcept
If enabled then rinstance parameter is added to contacts.
Definition Profile.cxx:829
virtual bool isAdvertisedCapability(Headers::Type header) const
Definition Profile.cxx:461
virtual int getDefaultRegistrationRetryTime() const noexcept
Definition Profile.cxx:132
virtual bool hasOutboundProxy() const noexcept
Definition Profile.cxx:515
virtual bool hasUserAgentCapabilities() const noexcept
Definition Profile.cxx:946
virtual void setDefaultSessionTimerMode(Profile::SessionTimerMode mode) noexcept
Definition Profile.cxx:317
virtual void unsetDefaultMaxRegistrationTime() noexcept
Definition Profile.cxx:111
virtual void unsetDefaultSessionTime() noexcept
Definition Profile.cxx:303
virtual void setOutboundProxy(const Uri &uri)
Use to route all outbound requests through a particular proxy.
Definition Profile.cxx:494
virtual void setRportEnabled(bool enabled) noexcept
enable/disable rport for requests. rport is enabled by default
Definition Profile.cxx:596
virtual void setDefaultMaxRegistrationTime(uint32_t secs) noexcept
If a registration gets rejected with a 423, then we ensure the MinExpires value is less than this bef...
Definition Profile.cxx:93
virtual bool getRportEnabled() const noexcept
Definition Profile.cxx:603
virtual void unsetMethodsParamEnabled() noexcept
Definition Profile.cxx:913
virtual uint32_t getDefaultMaxRegistrationTime() const noexcept
Definition Profile.cxx:100
virtual void unsetRportEnabled() noexcept
Definition Profile.cxx:614
virtual void unset1xxRelResubmitTime() noexcept
Definition Profile.cxx:399
virtual void setMethodsParamEnabled(bool enabled) noexcept
If enabled then methods parameter is added to contacts.
Definition Profile.cxx:895
SessionTimerMode
Only used if timer option tag is set in MasterProfile.
Definition Profile.hxx:100
Represents the "SIP-URI" and "SIPS-URI" elements in the RFC 3261 grammar.
Definition Uri.hxx:22
dcm! – add UnusedChecking(_enum) below;
unsigned int uint32_t
Definition Stun.hxx:34