/usr/include/sipxtapi/net/SipDialogEvent.h is in libsipxtapi-dev 3.3.0~test17-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 | //
// Copyright (C) 2004-2006 SIPfoundry Inc.
// Licensed by SIPfoundry under the LGPL license.
//
// Copyright (C) 2004-2006 Pingtel Corp. All rights reserved.
// Licensed to SIPfoundry under a Contributor Agreement.
//
// $$
///////////////////////////////////////////////////////////////////////////////
#ifndef _SipDialogEvent_h_
#define _SipDialogEvent_h_
// SYSTEM INCLUDES
// APPLICATION INCLUDES
#include <utl/UtlSList.h>
#include <utl/UtlSListIterator.h>
#include <net/HttpBody.h>
#include <net/Url.h>
#include <os/OsDateTime.h>
#include <os/OsBSem.h>
// DEFINES
// MACROS
// EXTERNAL FUNCTIONS
// EXTERNAL VARIABLES
// CONSTANTS
#define DIALOG_EVENT_TYPE "dialog"
#define BEGIN_DIALOG_INFO "<dialog-info xmlns=\"urn:ietf:params:xml:ns:dialog-info\""
#define END_DIALOG_INFO "</dialog-info>\n"
#define VERSION_EQUAL " version="
#define STATE_EQUAL " state="
#define ENTITY_EQUAL " entity="
#define DOUBLE_QUOTE "\""
#define END_BRACKET ">"
#define END_LINE ">\n"
#define BEGIN_DIALOG "<dialog id="
#define CALL_ID_EQUAL " call-id="
#define LOCAL_TAG_EQUAL " local-tag="
#define REMOTE_TAG_EQUAL " remote-tag="
#define DIRECTION_EQUAL " direction="
#define END_DIALOG "</dialog>\n"
#define BEGIN_STATE "<state"
#define EVENT_EQUAL " event="
#define CODE_EQUAL " code="
#define END_STATE "</state>\n"
#define BEGIN_DURATION "<duration>"
#define END_DURATION "</duration>\n"
#define BEGIN_LOCAL "<local>\n"
#define END_LOCAL "</local>\n"
#define BEGIN_REMOTE "<remote>\n"
#define END_REMOTE "</remote>\n"
#define BEGIN_IDENTITY "<identity"
#define DISPLAY_EQUAL " display="
#define END_IDENTITY "</identity>\n"
#define BEGIN_TARTGET "<target uri=\""
#define END_TARGET "\"/>\n"
#define STATE_TRYING "trying"
#define STATE_PROCEEDING "proceeding"
#define STATE_EARLY "early"
#define STATE_CONFIRMED "confirmed"
#define STATE_TERMINATED "terminated"
// STRUCTS
// TYPEDEFS
// FORWARD DECLARATIONS
//! Container for dialog element in the dialog event package
/**
* This class contains all the contents presented in a dialog element of the
* dialog event package described in draft-ietf-sipping-dialog-package-06.txt
* (An INVITE Initiated Dialog Event Package for SIP). This class has the
* methods to construct and manipulate the dialog and its sub-elements.
*/
class Dialog : public UtlContainable
{
/* //////////////////////////// PUBLIC //////////////////////////////////// */
public:
/**
* @name ====================== Constructors and Destructors
* @{
*/
/// Constructor
Dialog(const char* dialogId,
const char* callId,
const char* localTag,
const char* remoteTag,
const char* direction);
/// Destructor
~Dialog();
virtual UtlContainableType getContainableType() const;
static const UtlContainableType TYPE;
virtual unsigned int hash() const;
int compareTo(const UtlContainable *b) const;
///@}
/**
* @name ====================== Dialog Setting Interfaces
*
* These methods set/get the dialog element and sub-elements.
*
* @{
*/
void getDialog(UtlString& dialogId,
UtlString& callId,
UtlString& localTag,
UtlString& remoteTag,
UtlString& direction) const;
void getCallId(UtlString& callId) const;
void setDialogId(const char* dialogId);
void getDialogId(UtlString& dialogId) const;
void setState(const char* state, const char* event, const char* code);
void setTags(const char* local, const char* remote);
void getState(UtlString& state, UtlString& event, UtlString& code) const;
void setDuration(const unsigned long duration);
unsigned long getDuration() const;
void setReplaces(const char* callId,
const char* localTag,
const char* remoteTag);
void getReplaces(UtlString& callId,
UtlString& localTag,
UtlString& remoteTag) const;
void setReferredBy(const char* url,
const char* display);
void getReferredBy(UtlString& url,
UtlString& display) const;
void setLocalIdentity(const char* identity,
const char* display);
void getLocalIdentity(UtlString& identity,
UtlString& display) const;
void setRemoteIdentity(const char* identity,
const char* display);
void getRemoteIdentity(UtlString& identity,
UtlString& display) const;
void setLocalTarget(const char* url);
void getLocalTarget(UtlString& url) const;
void setRemoteTarget(const char* url);
void getRemoteTarget(UtlString& url) const;
///@}
/* //////////////////////////// PROTECTED ///////////////////////////////// */
protected:
// Set the unique identifier member by concatenating the call-id,
// to-tag, and from-tag.
void setIdentifier();
/* //////////////////////////// PRIVATE /////////////////////////////////// */
private:
// Variables for dialog element
UtlString mId;
UtlString mCallId;
UtlString mLocalTag;
UtlString mRemoteTag;
UtlString mDirection;
// Unique identifier of the dialog
UtlString mIdentifier;
// Variables for state element
UtlString mState;
UtlString mEvent;
UtlString mCode;
// Variables for duration element
long mDuration;
// Variables for replaces element
UtlString mNewCallId;
UtlString mNewLocalTag;
UtlString mNewRemoteTag;
// Variables for referred-by element
UtlString mReferredBy;
UtlString mDisplay;
// Variables for local element
UtlString mLocalIdentity;
UtlString mLocalDisplay;
UtlString mLocalTarget;
UtlString mLocalSessionDescription;
// Variables for remote element
UtlString mRemoteIdentity;
UtlString mRemoteDisplay;
UtlString mRemoteTarget;
UtlString mRemoteSessionDescription;
// Disabled copy constructor
Dialog(const Dialog& rDialog);
// Disabled assignment operator
Dialog& operator=(const Dialog& rhs);
};
//! Container for MIME type application/dialog-info+xml.
/**
* This class contains all the contents presented in a dialog event package
* described in draft-ietf-sipping-dialog-package-06.txt (An INVITE Initiated
* Dialog Event Package for SIP). This class has the methods to construct and
* manipulate the dialog events in a dialog event package.
*/
class SipDialogEvent : public HttpBody
{
/* //////////////////////////// PUBLIC //////////////////////////////////// */
public:
/**
* @name ====================== Constructors and Destructors
* @{
*/
//! Construct an empty body of a dialog event package
SipDialogEvent(const char* state,
const char* entity);
//! Construct from an existing dialog event package in XML format
SipDialogEvent(const char* bodyBytes);
//! Destructor that will free up the memory allocated for dialog contents if it is not being deleted
virtual
~SipDialogEvent();
///@}
/**
* @name ====================== Dialog Event Serialization Interfaces
*
* @{
*/
//! Build the body of this object
void buildBody() const;
//! Get the string length of this object
virtual int getLength() const;
//! Get the serialized char representation of this dialog event.
/*! \param bytes - pointer to the body text of the dialog event will
* be placed here.
* \param length - the number of bytes written (not including the
* null terminator).
*/
virtual void getBytes(const char** bytes,
int* length) const;
//! Get the serialized string representation of this dialog event.
/*! \param bytes - UtlString into which the body text will be copied.
* \param length - the number of bytes written (not including the
* null terminator).
*/
virtual void getBytes(UtlString* bytes,
int* length) const;
// Import HttpBody's getBytes methods, except as overridden here.
using HttpBody::getBytes;
void setEntity(const char* entity);
void getEntity(UtlString& entity) const;
void setState(const char* state);
void getState(UtlString& state) const;
///@}
/**
* @name ====================== Dialog Setting Interfaces
*
* These methods set/get the dialog element.
*
* @{
*/
//! Insert a Dialog object
void insertDialog(Dialog* dialog);
//! Get the Dialog object from the hash table based on the callId
//and tags. If the mRemoteTag of a Dialog object in the hash table
//is empty, then testing for match is only done on callId and
//localTag. Otherwise, all three fields are used.
Dialog* getDialog(UtlString& callId,
UtlString& localTag,
UtlString& remoteTag);
//! In the case where a empty SipDialog object is retrieved from the
//DialogEventPublisher in handling a DISCONNECTED or FAILED message
//the publisher still needs to find the dialog, even if it is just
//by the callId. Work-around for XCL-98.
Dialog* getDialogByCallId(UtlString& callId);
//! Remove a Dialog object
Dialog* removeDialog(Dialog* dialog);
//! Check whether there is are any dialogs or not
UtlBoolean isEmpty();
//! Return an iterator that will retrieve all dialogs in the event.
// This iterator is only valid as long as the SipDialogEvent is not
// modified, and must be deleted by the caller before the SipDialogEvent
// is deleted.
UtlSListIterator* getDialogIterator();
///@}
/* //////////////////////////// PROTECTED ///////////////////////////////// */
protected:
/// Parse an existing dialog event package from xml format into the internal representation.
void parseBody(const char* bytes);
/* //////////////////////////// PRIVATE /////////////////////////////////// */
private:
//! Variables for dialog-info
int mVersion;
UtlString mDialogState;
UtlString mEntity;
//! Variables for dialog element
UtlSList mDialogs;
//! reader/writer lock for synchronization
OsBSem mLock;
//! Disabled copy constructor
SipDialogEvent(const SipDialogEvent& rSipDialogEvent);
//! Disabled assignment operator
SipDialogEvent& operator=(const SipDialogEvent& rhs);
};
/* ============================ INLINE METHODS ============================ */
#endif // _SipDialogEvent_h_
|