1 |
#if !defined(RESIP_DIALOG_ID_HXX) |
2 |
#define RESIP_DIALOG_ID_HXX |
3 |
|
4 |
#include "resiprocate/os/Data.hxx" |
5 |
#include "resiprocate/dum/DialogSetId.hxx" |
6 |
|
7 |
namespace resip |
8 |
{ |
9 |
|
10 |
class DialogId |
11 |
{ |
12 |
public: |
13 |
DialogId(const SipMessage& msg ); |
14 |
DialogId(const Data& callId, const Data& localTag, const Data& remoteTag ); |
15 |
DialogId(const DialogSetId& id, const Data& remoteTag ); |
16 |
|
17 |
bool operator==(const DialogId& rhs) const; |
18 |
bool operator!=(const DialogId& rhs) const; |
19 |
bool operator<(const DialogId& rhs) const; |
20 |
|
21 |
const DialogSetId& getDialogSetId() const; |
22 |
|
23 |
const Data& getCallId() const; |
24 |
const Data& getLocalTag() const; |
25 |
const Data& getRemoteTag() const; |
26 |
|
27 |
size_t hash() const; |
28 |
|
29 |
#if defined(HASH_MAP_NAMESPACE) |
30 |
friend struct HASH_MAP_NAMESPACE::hash<resip::DialogId>; |
31 |
#elif defined(__INTEL_COMPILER ) |
32 |
friend size_t hash_value(const resip::DialogId& id); |
33 |
#endif |
34 |
|
35 |
private: |
36 |
friend std::ostream& operator<<(std::ostream&, const DialogId& id); |
37 |
DialogSetId mDialogSetId; |
38 |
Data mRemoteTag; |
39 |
}; |
40 |
} |
41 |
#if defined(HASH_MAP_NAMESPACE) |
42 |
namespace HASH_MAP_NAMESPACE |
43 |
{ |
44 |
|
45 |
template<> |
46 |
struct hash<resip::DialogId> |
47 |
{ |
48 |
size_t operator()(const resip::DialogId& id) const; |
49 |
}; |
50 |
|
51 |
} |
52 |
#elif defined(__INTEL_COMPILER) |
53 |
namespace std { size_t hash_value(const resip::DialogId& id); } |
54 |
#endif |
55 |
|
56 |
|
57 |
#endif |
58 |
|
59 |
/* ==================================================================== |
60 |
* The Vovida Software License, Version 1.0 |
61 |
* |
62 |
* Copyright (c) 2000 Vovida Networks, Inc. All rights reserved. |
63 |
* |
64 |
* Redistribution and use in source and binary forms, with or without |
65 |
* modification, are permitted provided that the following conditions |
66 |
* are met: |
67 |
* |
68 |
* 1. Redistributions of source code must retain the above copyright |
69 |
* notice, this list of conditions and the following disclaimer. |
70 |
* |
71 |
* 2. Redistributions in binary form must reproduce the above copyright |
72 |
* notice, this list of conditions and the following disclaimer in |
73 |
* the documentation and/or other materials provided with the |
74 |
* distribution. |
75 |
* |
76 |
* 3. The names "VOCAL", "Vovida Open Communication Application Library", |
77 |
* and "Vovida Open Communication Application Library (VOCAL)" must |
78 |
* not be used to endorse or promote products derived from this |
79 |
* software without prior written permission. For written |
80 |
* permission, please contact vocal@vovida.org. |
81 |
* |
82 |
* 4. Products derived from this software may not be called "VOCAL", nor |
83 |
* may "VOCAL" appear in their name, without prior written |
84 |
* permission of Vovida Networks, Inc. |
85 |
* |
86 |
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED |
87 |
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
88 |
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND |
89 |
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA |
90 |
* NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES |
91 |
* IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, |
92 |
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
93 |
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
94 |
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
95 |
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
96 |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE |
97 |
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH |
98 |
* DAMAGE. |
99 |
* |
100 |
* ==================================================================== |
101 |
* |
102 |
* This software consists of voluntary contributions made by Vovida |
103 |
* Networks, Inc. and many individuals on behalf of Vovida Networks, |
104 |
* Inc. For more information on Vovida Networks, Inc., please see |
105 |
* <http://www.vovida.org/>. |
106 |
* |
107 |
*/ |