OPAL  Version 3.10.10
handlers.h
Go to the documentation of this file.
1 /*
2  * handlers.h
3  *
4  * Session Initiation Protocol endpoint.
5  *
6  * Open Phone Abstraction Library (OPAL)
7  *
8  * Copyright (c) 2000 Equivalence Pty. Ltd.
9  *
10  * The contents of this file are subject to the Mozilla Public License
11  * Version 1.0 (the "License"); you may not use this file except in
12  * compliance with the License. You may obtain a copy of the License at
13  * http://www.mozilla.org/MPL/
14  *
15  * Software distributed under the License is distributed on an "AS IS"
16  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
17  * the License for the specific language governing rights and limitations
18  * under the License.
19  *
20  * The Original Code is Open Phone Abstraction Library.
21  *
22  * The Initial Developer of the Original Code is Damien Sandras.
23  *
24  * Contributor(s): ______________________________________.
25  *
26  * $Revision: 28428 $
27  * $Author: rjongbloed $
28  * $Date: 2012-10-01 03:38:50 -0500 (Mon, 01 Oct 2012) $
29  */
30 
31 #ifndef OPAL_SIP_HANDLERS_H
32 #define OPAL_SIP_HANDLERS_H
33 
34 #ifdef P_USE_PRAGMA
35 #pragma interface
36 #endif
37 
38 #ifndef _PTLIB_H
39 #include <ptlib.h>
40 #endif
41 
42 #include <opal/buildopts.h>
43 
44 #if OPAL_SIP
45 
46 #include <opal/pres_ent.h>
47 #include <opal/connection.h>
48 #include <sip/sippdu.h>
49 
50 
51 /* Class to handle SIP REGISTER, SUBSCRIBE, MESSAGE, and renew
52  * the 'bindings' before they expire.
53  */
54 class SIPHandler : public PSafeObject
55 {
56  PCLASSINFO(SIPHandler, PSafeObject);
57 
58 protected:
59  SIPHandler(
60  SIP_PDU::Methods method,
61  SIPEndPoint & ep,
62  const SIPParameters & params
63  );
64 
65 public:
66  ~SIPHandler();
67 
68  virtual Comparison Compare(const PObject & other) const;
69 
70  virtual bool ShutDown();
71 
72  enum State {
73  Subscribed, // The registration is active
74  Subscribing, // The registration is in process
75  Unavailable, // The registration is offline and still being attempted
76  Refreshing, // The registration is being refreshed
77  Restoring, // The registration is trying to be restored after being offline
78  Unsubscribing, // The unregistration is in process
79  Unsubscribed, // The registrating is inactive
81  };
82 
83  void SetState (SIPHandler::State s);
84 
86  { return m_state; }
87 
88  virtual OpalTransport * GetTransport();
89 
91  { return m_authentication; }
92 
93  virtual const SIPURL & GetAddressOfRecord()
94  { return m_addressOfRecord; }
95 
96  virtual PBoolean OnReceivedNOTIFY(SIP_PDU & response);
97 
98  virtual void SetExpire(int e);
99 
100  virtual int GetExpire()
101  { return m_currentExpireTime; }
102 
103  virtual const PString & GetCallID() const
104  { return m_callID; }
105 
106  virtual void SetBody(const PString & /*body*/) { }
107 
108  virtual bool IsDuplicateCSeq(unsigned ) { return false; }
109 
111 
112  SIP_PDU::Methods GetMethod() const { return m_method; }
114 
115  virtual void OnReceivedResponse(SIPTransaction & transaction, SIP_PDU & response);
116  virtual void OnReceivedIntervalTooBrief(SIPTransaction & transaction, SIP_PDU & response);
117  virtual void OnReceivedTemporarilyUnavailable(SIPTransaction & transaction, SIP_PDU & response);
118  virtual void OnReceivedAuthenticationRequired(SIPTransaction & transaction, SIP_PDU & response);
119  virtual void OnReceivedOK(SIPTransaction & transaction, SIP_PDU & response);
120  virtual void OnTransactionFailed(SIPTransaction & transaction);
121 
122  virtual void OnFailed(const SIP_PDU & response);
123  virtual void OnFailed(SIP_PDU::StatusCodes);
124 
125  bool ActivateState(SIPHandler::State state);
126  virtual bool SendNotify(const PObject * /*body*/) { return false; }
127 
128  SIPEndPoint & GetEndPoint() const { return endpoint; }
129 
130  const OpalProductInfo & GetProductInfo() const { return m_productInfo; }
131 
132  const PString & GetUsername() const { return m_username; }
133  const PString & GetPassword() const { return m_password; }
134  const PString & GetRealm() const { return m_realm; }
135  const SIPURL & GetRemoteAddress() const { return m_remoteAddress; }
136  const SIPURL & GetProxy() const { return m_proxy; }
137 
139 
140 protected:
141  virtual PBoolean SendRequest(SIPHandler::State state);
142  void RetryLater(unsigned after);
143  PDECLARE_NOTIFIER(PTimer, SIPHandler, OnExpireTimeout);
144  static PBoolean WriteSIPHandler(OpalTransport & transport, void * info);
145  virtual bool WriteSIPHandler(OpalTransport & transport, bool forked);
146 
148 
151  PString m_username;
152  PString m_password;
153  PString m_realm;
154 
155  PSafeList<SIPTransaction> m_transactions;
157 
161  PString m_callID;
162  unsigned m_lastCseq;
167  std::queue<State> m_stateQueue;
169  PTimer m_expireTimer;
172 
173  // Keep a copy of the keys used for easy removal on destruction
174  typedef std::map<PString, PSafePtr<SIPHandler> > IndexMap;
175  std::pair<IndexMap::iterator, bool> m_byCallID;
176  std::pair<IndexMap::iterator, bool> m_byAorAndPackage;
177  std::pair<IndexMap::iterator, bool> m_byAuthIdAndRealm;
178  std::pair<IndexMap::iterator, bool> m_byAorUserAndRealm;
179 
180  friend class SIPHandlersList;
181 };
182 
183 #if PTRACING
184 ostream & operator<<(ostream & strm, SIPHandler::State state);
185 #endif
186 
187 
189 {
190  PCLASSINFO(SIPRegisterHandler, SIPHandler);
191 
192 public:
194  SIPEndPoint & ep,
195  const SIPRegister::Params & params
196  );
197 
199  virtual void OnReceivedOK(SIPTransaction & transaction, SIP_PDU & response);
200 
201  virtual void OnFailed(SIP_PDU::StatusCodes r);
202 
203  void UpdateParameters(const SIPRegister::Params & params);
204 
205  const SIPRegister::Params & GetParams() const { return m_parameters; }
206 
207  const SIPURLList & GetContacts() const { return m_contactAddresses; }
208  const SIPURLList & GetServiceRoute() const { return m_serviceRoute; }
209 
210 protected:
211  virtual PBoolean SendRequest(SIPHandler::State state);
212  void SendStatus(SIP_PDU::StatusCodes code, State state);
213 
219 };
220 
221 
223 {
224  PCLASSINFO(SIPSubscribeHandler, SIPHandler);
225 public:
228 
230  virtual void OnReceivedOK(SIPTransaction & transaction, SIP_PDU & response);
231  virtual PBoolean OnReceivedNOTIFY(SIP_PDU & response);
232  virtual void OnFailed(const SIP_PDU & response);
234  { return m_parameters.m_eventPackage; }
235 
236  void UpdateParameters(const SIPSubscribe::Params & params);
237 
238  virtual bool IsDuplicateCSeq(unsigned sequenceNumber) { return m_dialog.IsDuplicateCSeq(sequenceNumber); }
239 
240  const SIPSubscribe::Params & GetParams() const { return m_parameters; }
241 
242 protected:
243  virtual PBoolean SendRequest(SIPHandler::State state);
244  virtual bool WriteSIPHandler(OpalTransport & transport, bool forked);
245  void SendStatus(SIP_PDU::StatusCodes code, State state);
246  bool DispatchNOTIFY(SIP_PDU & request, SIP_PDU & response);
247 
252 
254 };
255 
256 
258 {
259  PCLASSINFO(SIPNotifyHandler, SIPHandler);
260 public:
262  SIPEndPoint & ep,
263  const PString & targetAddress,
264  const SIPEventPackage & eventPackage,
265  const SIPDialogContext & dialog
266  );
268 
271  { return m_eventPackage; }
272 
273  virtual void SetBody(const PString & body) { m_body = body; }
274 
275  virtual bool IsDuplicateCSeq(unsigned sequenceNumber) { return m_dialog.IsDuplicateCSeq(sequenceNumber); }
276  virtual bool SendNotify(const PObject * body);
277 
278  enum Reasons {
285  };
286 
287 protected:
288  virtual PBoolean SendRequest(SIPHandler::State state);
289  virtual bool WriteSIPHandler(OpalTransport & transport, bool forked);
290 
295  PString m_body;
296 };
297 
298 
300 {
301  PCLASSINFO(SIPPublishHandler, SIPHandler);
302 
303 public:
305  const SIPSubscribe::Params & params,
306  const PString & body);
307 
308  virtual void SetBody(const PString & body) { m_body = body; }
309 
311  virtual void OnReceivedOK(SIPTransaction & transaction, SIP_PDU & response);
313 
314 protected:
316  PString m_body;
317  PString m_sipETag;
318 };
319 
320 
322 {
323  PCLASSINFO(SIPMessageHandler, SIPHandler);
324 public:
325  SIPMessageHandler(SIPEndPoint & ep, const SIPMessage::Params & params);
326 
328  virtual void OnFailed(SIP_PDU::StatusCodes);
329  virtual void OnReceivedOK(SIPTransaction & transaction, SIP_PDU & response);
330 
331  void UpdateParameters(const SIPMessage::Params & params);
332 
333 protected:
335 };
336 
337 
339 {
340  PCLASSINFO(SIPOptionsHandler, SIPHandler);
341 public:
342  SIPOptionsHandler(SIPEndPoint & ep, const SIPOptions::Params & params);
343 
345  virtual void OnFailed(SIP_PDU::StatusCodes);
346  virtual void OnFailed(const SIP_PDU & response);
347  virtual void OnReceivedOK(SIPTransaction & transaction, SIP_PDU & response);
348 
349 protected:
351 };
352 
353 
355 {
356  PCLASSINFO(SIPPingHandler, SIPHandler);
357 public:
358  SIPPingHandler(SIPEndPoint & ep, const PURL & to);
360 };
361 
362 
367 {
368  public:
371  void Append(SIPHandler * handler);
372 
377  void Remove(SIPHandler * handler);
378 
381  void Update(SIPHandler * handler);
382 
386  { return m_handlersList.DeleteObjectsToBeRemoved(); }
387 
391  PSafePtr<SIPHandler> GetFirstHandler(PSafetyMode mode = PSafeReference) const
392  { return PSafePtr<SIPHandler>(m_handlersList, mode); }
393 
397  unsigned GetCount(SIP_PDU::Methods meth, const PString & eventPackage = PString::Empty()) const;
398 
402  PStringList GetAddresses(bool includeOffline, SIP_PDU::Methods meth, const PString & eventPackage = PString::Empty()) const;
403 
407  PSafePtr<SIPHandler> FindSIPHandlerByCallID(const PString & callID, PSafetyMode m);
408 
412  PSafePtr<SIPHandler> FindSIPHandlerByAuthRealm(const PString & authRealm, PSafetyMode m);
413 
417  PSafePtr<SIPHandler> FindSIPHandlerByAuthRealm(const PString & authRealm, const PString & userName, PSafetyMode m);
418 
426  PSafePtr<SIPHandler> FindSIPHandlerByUrl(const PURL & url, SIP_PDU::Methods meth, PSafetyMode m);
427  PSafePtr<SIPHandler> FindSIPHandlerByUrl(const PURL & url, SIP_PDU::Methods meth, const PString & eventPackage, PSafetyMode m);
428 
434  PSafePtr <SIPHandler> FindSIPHandlerByDomain(const PString & name, SIP_PDU::Methods meth, PSafetyMode m);
435 
436  protected:
437  void RemoveIndexes(SIPHandler * handler);
438 
439  PMutex m_extraMutex;
440  PSafeList<SIPHandler> m_handlersList;
441 
443  PSafePtr<SIPHandler> FindBy(IndexMap & by, const PString & key, PSafetyMode m);
444 
449 };
450 
451 
455 {
456 public:
458  State state = Unchanged
459  );
460 
461  // basic presence defined by RFC 3863
462  PString m_tupleId;
463  PString m_contact;
464 
465  // presence extensions defined by RFC 4480
466  PStringArray m_activities; // list of activities, seperated by newline
467 
468  // presence agent
470 
471  PString AsXML() const;
472 
473 #if P_EXPAT
474  static bool ParseXML(
475  const PString & body,
476  list<SIPPresenceInfo> & info,
477  PString & error
478  );
479 #endif
480 
481  void PrintOn(ostream & strm) const;
482  friend ostream & operator<<(ostream & strm, const SIPPresenceInfo & info) { info.PrintOn(strm); return strm; }
483 
484  static State FromSIPActivityString(const PString & str);
485 
486  static bool AsSIPActivityString(State state, PString & str);
487  bool AsSIPActivityString(PString & str) const;
488 
489  PString m_personId;
490 };
491 
492 
495 struct SIPDialogNotification : public PObject
496 {
498 
499  enum States {
505 
508  };
509  friend States operator++(States & state) { return (state = (States)(state+1)); }
510  friend States operator--(States & state) { return (state = (States)(state-1)); }
511  static PString GetStateName(States state);
512  PString GetStateName() const { return GetStateName(m_state); }
513 
514  enum Events {
515  NoEvent = -1,
523 
526  };
527  friend Events operator++(Events & evt) { return (evt = (Events)(evt+1)); }
528  friend Events operator--(Events & evt) { return (evt = (Events)(evt-1)); }
529  static PString GetEventName(Events state);
530  PString GetEventName() const { return GetEventName(m_eventType); }
531 
532  enum Rendering {
536  };
537 
538  PString m_entity;
539  PString m_dialogId;
540  PString m_callId;
544  unsigned m_eventCode;
545  struct Participant {
547  PString m_URI;
548  PString m_dialogTag;
549  PString m_identity;
550  PString m_display;
552  bool m_byeless;
554  } m_local, m_remote;
555 
556  SIPDialogNotification(const PString & entity = PString::Empty());
557 
558  void PrintOn(ostream & strm) const;
559 };
560 
561 
562 #endif // OPAL_SIP
563 
564 #endif // OPAL_SIP_HANDLERS_H
Definition: handlers.h:506
void SendStatus(SIP_PDU::StatusCodes code, State state)
Definition: sippdu.h:1118
Definition: sippdu.h:70
virtual void SetBody(const PString &body)
Definition: handlers.h:308
PString m_callID
Definition: handlers.h:161
Definition: pres_ent.h:66
virtual SIPEventPackage GetEventPackage() const
Definition: handlers.h:312
virtual void OnTransactionFailed(SIPTransaction &transaction)
Definition: handlers.h:338
unsigned m_lastCseq
Definition: handlers.h:162
Definition: handlers.h:545
virtual void OnFailed(SIP_PDU::StatusCodes r)
Rendering
Definition: handlers.h:532
virtual bool IsDuplicateCSeq(unsigned)
Definition: handlers.h:108
Definition: handlers.h:495
SIPDialogNotification(const PString &entity=PString::Empty())
Definition: sippdu.h:854
IndexMap m_byAorUserAndRealm
Definition: handlers.h:448
friend States operator++(States &state)
Definition: handlers.h:509
virtual SIPSubscribe::EventPackage GetEventPackage() const
Definition: handlers.h:113
PString m_sipETag
Definition: handlers.h:317
Definition: handlers.h:500
Definition: sippdu.h:275
Definition: sippdu.h:1314
Definition: handlers.h:279
virtual void SetBody(const PString &)
Definition: handlers.h:106
virtual PBoolean SendRequest(SIPHandler::State state)
void PrintOn(ostream &strm) const
Definition: handlers.h:321
const PString & GetRealm() const
Definition: handlers.h:134
SIPSubscribeHandler(SIPEndPoint &ep, const SIPSubscribe::Params &params)
virtual const SIPURL & GetAddressOfRecord()
Definition: handlers.h:93
PString m_personId
Definition: handlers.h:489
PString m_display
Definition: handlers.h:550
virtual bool IsDuplicateCSeq(unsigned sequenceNumber)
Definition: handlers.h:275
PSafePtr< SIPHandler > FindSIPHandlerByDomain(const PString &name, SIP_PDU::Methods meth, PSafetyMode m)
bool m_initiator
Definition: handlers.h:541
SIPRegister::Params m_parameters
Definition: handlers.h:214
unsigned m_eventCode
Definition: handlers.h:544
unsigned GetCount(SIP_PDU::Methods meth, const PString &eventPackage=PString::Empty()) const
void RemoveIndexes(SIPHandler *handler)
virtual SIPAuthentication * GetAuthentication()
Definition: handlers.h:90
Definition: transports.h:703
virtual void OnFailed(const SIP_PDU &response)
Definition: sippdu.h:1169
PString m_body
Definition: handlers.h:295
Definition: sipep.h:86
virtual SIPTransaction * CreateTransaction(OpalTransport &)
PString GetEventName() const
Definition: handlers.h:530
PString m_username
Definition: handlers.h:151
const SIPSubscribe::Params & GetParams() const
Definition: handlers.h:240
SIPURL m_addressOfRecord
Definition: handlers.h:159
Definition: handlers.h:74
virtual SIPTransaction * CreateTransaction(OpalTransport &t)=0
std::pair< IndexMap::iterator, bool > m_byAuthIdAndRealm
Definition: handlers.h:177
PString m_password
Definition: handlers.h:152
SIP_PDU::Methods m_method
Definition: handlers.h:158
Definition: handlers.h:535
Rendering m_rendering
Definition: handlers.h:553
void Update(SIPHandler *handler)
static PBoolean WriteSIPHandler(OpalTransport &transport, void *info)
std::map< PString, PSafePtr< SIPHandler > > IndexMap
Definition: handlers.h:174
PString m_identity
Definition: handlers.h:549
virtual void OnReceivedResponse(SIPTransaction &transaction, SIP_PDU &response)
StatusCodes
Definition: sippdu.h:518
const SIPURLList & GetContacts() const
Definition: handlers.h:207
Definition: handlers.h:516
Definition: sippdu.h:496
Definition: handlers.h:257
SIPDialogContext m_dialog
Definition: handlers.h:249
SIPOptions::Params m_parameters
Definition: handlers.h:350
std::pair< IndexMap::iterator, bool > m_byAorUserAndRealm
Definition: handlers.h:178
SIPRegisterHandler(SIPEndPoint &ep, const SIPRegister::Params &params)
virtual Comparison Compare(const PObject &other) const
State m_state
Definition: handlers.h:166
Definition: handlers.h:280
State
Definition: handlers.h:72
void Append(SIPHandler *handler)
PString AsXML() const
virtual PBoolean SendRequest(SIPHandler::State state)
void UpdateParameters(const SIPRegister::Params &params)
void SendStatus(SIP_PDU::StatusCodes code, State state)
PString m_realm
Definition: handlers.h:153
Events m_eventType
Definition: handlers.h:543
virtual void OnFailed(const SIP_PDU &response)
virtual SIPEventPackage GetEventPackage() const
Definition: handlers.h:270
Definition: handlers.h:503
bool DeleteObjectsToBeRemoved()
Definition: handlers.h:385
bool m_byeless
Definition: handlers.h:552
virtual int GetExpire()
Definition: handlers.h:100
SIPSubscribe::EventPackage SIPEventPackage
Definition: sippdu.h:1212
PSafePtr< SIPHandler > FindBy(IndexMap &by, const PString &key, PSafetyMode m)
virtual OpalTransport * GetTransport()
States
Definition: handlers.h:499
virtual SIPTransaction * CreateTransaction(OpalTransport &)
virtual PBoolean OnReceivedNOTIFY(SIP_PDU &response)
IndexMap m_byAuthIdAndRealm
Definition: handlers.h:447
int m_appearance
Definition: handlers.h:551
friend States operator--(States &state)
Definition: handlers.h:510
PSafeList< SIPHandler > m_handlersList
Definition: handlers.h:440
Definition: handlers.h:525
std::pair< IndexMap::iterator, bool > m_byCallID
Definition: handlers.h:175
int m_currentExpireTime
Definition: handlers.h:163
PString m_dialogId
Definition: handlers.h:539
Definition: handlers.h:366
struct SIPDialogNotification::Participant m_remote
PDECLARE_NOTIFIER(PTimer, SIPHandler, OnExpireTimeout)
Definition: handlers.h:533
Definition: handlers.h:77
Definition: handlers.h:522
Definition: handlers.h:524
unsigned m_authenticateErrors
Definition: handlers.h:150
Definition: sippdu.h:1358
SIPPresenceInfo(State state=Unchanged)
virtual void OnReceivedOK(SIPTransaction &transaction, SIP_PDU &response)
Definition: handlers.h:520
PString m_entity
Definition: handlers.h:538
Definition: handlers.h:79
virtual void OnReceivedIntervalTooBrief(SIPTransaction &transaction, SIP_PDU &response)
SIPDialogContext m_dialog
Definition: handlers.h:292
Definition: handlers.h:519
PSafePtr< SIPHandler > FindSIPHandlerByAuthRealm(const PString &authRealm, PSafetyMode m)
virtual bool WriteSIPHandler(OpalTransport &transport, bool forked)
SIPMessage::Params m_parameters
Definition: handlers.h:334
SIPPublishHandler(SIPEndPoint &ep, const SIPSubscribe::Params &params, const PString &body)
Definition: handlers.h:54
Definition: handlers.h:80
virtual void OnReceivedOK(SIPTransaction &transaction, SIP_PDU &response)
PMutex m_extraMutex
Definition: handlers.h:439
Definition: sippdu.h:806
const PString & GetPassword() const
Definition: handlers.h:133
PSafePtr< SIPHandler > FindSIPHandlerByCallID(const PString &callID, PSafetyMode m)
PCLASSINFO(SIPDialogNotification, PObject)
Definition: handlers.h:501
Definition: handlers.h:78
SIPURLList m_serviceRoute
Definition: handlers.h:217
virtual void OnFailed(SIP_PDU::StatusCodes)
void PrintOn(ostream &strm) const
PString GetStateName() const
Definition: handlers.h:512
Definition: sippdu.h:734
Definition: handlers.h:284
PHTTPClientAuthentication SIPAuthentication
Definition: sippdu.h:471
IndexMap m_byCallID
Definition: handlers.h:445
SIPURL m_remoteAddress
Definition: handlers.h:160
std::queue< State > m_stateQueue
Definition: handlers.h:167
Definition: handlers.h:76
State
Presence states.
Definition: pres_ent.h:60
Definition: sippdu.h:1219
virtual void OnReceivedOK(SIPTransaction &transaction, SIP_PDU &response)
virtual void OnReceivedAuthenticationRequired(SIPTransaction &transaction, SIP_PDU &response)
virtual void SetBody(const PString &body)
Definition: handlers.h:273
Definition: handlers.h:75
OpalProductInfo m_productInfo
Definition: handlers.h:171
SIPEndPoint & GetEndPoint() const
Definition: handlers.h:128
bool m_unconfirmed
Definition: handlers.h:250
SIPHandler(SIP_PDU::Methods method, SIPEndPoint &ep, const SIPParameters &params)
Definition: handlers.h:518
ostream & operator<<(ostream &strm, OpalSilenceDetector::Mode mode)
Definition: handlers.h:73
Definition: handlers.h:281
SIPEndPoint & endpoint
Definition: handlers.h:147
friend Events operator--(Events &evt)
Definition: handlers.h:528
SIPEventPackageHandler * m_packageHandler
Definition: handlers.h:294
void RetryLater(unsigned after)
Definition: handlers.h:517
Reasons
Definition: handlers.h:278
virtual SIPTransaction * CreateTransaction(OpalTransport &)
virtual SIPTransaction * CreateTransaction(OpalTransport &)
virtual bool SendNotify(const PObject *body)
int m_offlineExpireTime
Definition: handlers.h:165
unsigned m_sequenceNumber
Definition: handlers.h:215
OpalTransportAddress m_externalAddress
Definition: handlers.h:218
PSafeList< SIPTransaction > m_transactions
Definition: handlers.h:155
void UpdateParameters(const SIPSubscribe::Params &params)
const SIPURL & GetProxy() const
Definition: handlers.h:136
struct SIPDialogNotification::Participant m_local
const SIPURLList & GetServiceRoute() const
Definition: handlers.h:208
Definition: handlers.h:299
PStringArray m_activities
Definition: handlers.h:466
PSafePtr< SIPHandler > FindSIPHandlerByUrl(const PURL &url, SIP_PDU::Methods meth, PSafetyMode m)
virtual bool SendNotify(const PObject *)
Definition: handlers.h:126
void SetState(SIPHandler::State s)
virtual const PString & GetCallID() const
Definition: handlers.h:103
Definition: handlers.h:222
virtual void OnReceivedTemporarilyUnavailable(SIPTransaction &transaction, SIP_PDU &response)
Registrar parameters.
Definition: sippdu.h:1059
Definition: handlers.h:354
SIPURL m_proxy
Definition: handlers.h:170
PString m_tupleId
Definition: handlers.h:462
int m_originalExpireTime
Definition: handlers.h:164
const OpalProductInfo & GetProductInfo() const
Definition: handlers.h:130
SIPMessageHandler(SIPEndPoint &ep, const SIPMessage::Params &params)
SIPEventPackageHandler * m_packageHandler
Definition: handlers.h:251
Participant()
Definition: handlers.h:546
Definition: sippdu.h:228
const SIPRegister::Params & GetParams() const
Definition: handlers.h:205
const SIPURL & GetRemoteAddress() const
Definition: handlers.h:135
virtual SIPTransaction * CreateTransaction(OpalTransport &)
SIPSubscribe::Params m_parameters
Definition: handlers.h:315
OpalTransport * m_transport
Definition: handlers.h:156
SIPSubscribe::Params m_parameters
Definition: handlers.h:248
virtual SIPTransaction * CreateTransaction(OpalTransport &)
Methods
Definition: sippdu.h:500
virtual bool IsDuplicateCSeq(unsigned sequenceNumber)
Definition: handlers.h:238
PString m_callId
Definition: handlers.h:540
SIPMIMEInfo m_mime
Definition: handlers.h:138
std::pair< IndexMap::iterator, bool > m_byAorAndPackage
Definition: handlers.h:176
Reasons m_reason
Definition: handlers.h:293
Definition: handlers.h:188
SIPNotifyHandler(SIPEndPoint &ep, const PString &targetAddress, const SIPEventPackage &eventPackage, const SIPDialogContext &dialog)
Definition: handlers.h:507
SIP_PDU::Methods GetMethod() const
Definition: handlers.h:112
virtual void SetExpire(int e)
static State FromSIPActivityString(const PString &str)
Definition: handlers.h:502
IndexMap m_byAorAndPackage
Definition: handlers.h:446
Definition: handlers.h:282
bool DispatchNOTIFY(SIP_PDU &request, SIP_PDU &response)
Definition: handlers.h:521
SIPPingHandler(SIPEndPoint &ep, const PURL &to)
PString m_URI
Definition: handlers.h:547
Definition: transports.h:149
virtual PBoolean SendRequest(SIPHandler::State state)
EventPackage m_eventPackage
Definition: sippdu.h:1188
bool IsDuplicateCSeq(unsigned sequenceNumber)
Definition: pres_ent.h:56
Definition: handlers.h:515
Definition: handlers.h:454
PStringList GetAddresses(bool includeOffline, SIP_PDU::Methods meth, const PString &eventPackage=PString::Empty()) const
const PString & GetUsername() const
Definition: handlers.h:132
SIPAuthentication * m_authentication
Definition: handlers.h:149
virtual void OnFailed(SIP_PDU::StatusCodes)
friend Events operator++(Events &evt)
Definition: handlers.h:527
static bool AsSIPActivityString(State state, PString &str)
virtual PBoolean OnReceivedNOTIFY(SIP_PDU &response)
SIPURLList m_contactAddresses
Definition: handlers.h:216
void UpdateParameters(const SIPMessage::Params &params)
Definition: handlers.h:504
friend ostream & operator<<(ostream &strm, const SIPPresenceInfo &info)
Definition: handlers.h:482
virtual bool ShutDown()
virtual void OnReceivedOK(SIPTransaction &transaction, SIP_PDU &response)
virtual PBoolean SendRequest(SIPHandler::State state)
bool ActivateState(SIPHandler::State state)
PString m_contact
Definition: handlers.h:463
SIP_PDU * m_previousResponse
Definition: handlers.h:253
Definition: connection.h:312
PTimer m_expireTimer
Definition: handlers.h:169
virtual SIPTransaction * CreateTransaction(OpalTransport &)
PString m_body
Definition: handlers.h:316
PString m_dialogTag
Definition: handlers.h:548
SIPHandler::State GetState()
Definition: handlers.h:85
virtual SIPEventPackage GetEventPackage() const
Definition: handlers.h:233
PSafePtr< SIPHandler > GetFirstHandler(PSafetyMode mode=PSafeReference) const
Definition: handlers.h:391
virtual bool WriteSIPHandler(OpalTransport &transport, bool forked)
void Remove(SIPHandler *handler)
SIPHandler::IndexMap IndexMap
Definition: handlers.h:442
virtual void OnReceivedOK(SIPTransaction &transaction, SIP_PDU &response)
SIPOptionsHandler(SIPEndPoint &ep, const SIPOptions::Params &params)
Definition: handlers.h:283
virtual void OnReceivedOK(SIPTransaction &transaction, SIP_PDU &response)
States m_state
Definition: handlers.h:542
PString m_presenceAgent
Definition: handlers.h:469
bool m_receivedResponse
Definition: handlers.h:168
SIPEventPackage m_eventPackage
Definition: handlers.h:291
Events
Definition: handlers.h:514